在React中单击另一个输入框时如何更改输入值

我正在学习React。我正在尝试在输入框中选择国家/地区值,handlechange事件将以国家/地区代码为目标,并且值将自动选择。我没有在此处添加功能handlechange和handleClick,因为它们无法正常工作。我也为每个字段输入不同的输入框。如何只获得一个带有下拉列表的输入框?

export default class Api extends Component {
        constructor(props) {
          super(props);
      
          this.state = {
            country: [],
            countryCode:''
          };
        }
  componentDidMount() {
    fetch("https://restcountries.eu/rest/v2/all")
      .then((res) => res.json())
      .then((result) => {
        console.log(result);
        console.warn(result);
        this.setState({ country: result });
        console.log("i am in console");
      });
  }

 this.handleClick = this.handleClick.bind(this);
 this.handleInputChange = this.handleInputChange.bind(this);

  render() {
    return (
      <div>
        <h1 className="text-center"> Api</h1>
        <h2> country details</h2>
        <div>
          {this.state.country.map((countries, i) => (
            <div key={i}>
                <label>Select Country</label>
                <select>
                    <option  onClick={this.handleClick}> {countries.name}</option>
                    </select>
               
              <label>Country Code: </label><input type="text" className="m-5" value={countries.callingCodes} onChange={this.handleInputChange} /> 
            
            </div>
          ))}
        </div>
      </div>
    );
  }
}
法鲁克·诺拉莫多夫(Farrukh Normuradov)

您可以在这里试用我的更改

import React, { Component } from "react";

export default class Api extends Component {
  state = {
    countries: [],
    countryName: "",
    countryCode: ""
  };

  handleCountryPick = (event) => {
    event.preventDefault();
    const country = this.state.countries.find(
      (country) => country.name === event.target.value
    );
    this.setState({
      countryCode: country.callingCodes,
      countryName: country.name
    });
  };

  async componentDidMount() {
    const response = await fetch("https://restcountries.eu/rest/v2/all");
    const countries = await response.json();
    this.setState({ countries: countries });
  }

  render() {
    return (
      <div>
        <h1 className="text-center">Api</h1>
        <h2>country details</h2>
        <CountrySelector
          countries={this.state.countries}
          countryName={this.state.countryName}
          onCountryPickHandler={this.handleCountryPick}
        />
        <CountryCodeInput countryCode={this.state.countryCode} />
      </div>
    );
  }
}

const CountrySelector = ({ countryName, countries, onCountryPickHandler }) => {
  const options = countries.map((country) => (
    <option key={country.name} value={country.name}>
      {country.name}
    </option>
  ));
  return (
    <div>
      <select value={countryName || "none"} onChange={onCountryPickHandler}>
        {options}
        <option value="none">None</option>
      </select>
    </div>
  );
};

const CountryCodeInput = ({ countryCode }) => {
  return (
    <div>
      <label>Country Code: </label>
      <input type="text" value={countryCode} />
    </div>
  );
};

这是您需要学习才能从头开始实现的内容:

  1. 数据绑定是单向的,从父母到孩子,这就是为什么你需要保持你的处理程序(回调),handleCountryPick在保持状态的父countriescountryNamecountryCode
  2. 更新发生的时间以及哪些组件知道什么时间。

序列UML图

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

相对于另一个输入框更改输入框的值?

如何在另一个输入框中计算HTML输入框的值

如何基于另一个输入框自动填充输入框

如何从另一个输入框生成“n”行输入框?

如何将输入框中的 1 个值除以 10 另一个输入框除以 10 而不舍入

如何在更改同一行中的另一个dom elment时以tr中的输入框为目标?

如何将值从一个输入框复制到另一个输入框?

在onkeyup的另一个输入框中,在两个输入值之间显示'&'。

添加2个输入值并在另一个输入框中显示结果

如何将我的第一个输入框链接到数据库中已存在的另一个输入框

如何将多个输入框的值传递给另一个输入或文本区域

从另一个动态html的值设置输入框的max属性

当输入中的值已更改 jQuery 时更改另一个值字段

AngularJS:仅在选中复选框的情况下,将一个输入框的值复制到另一个输入框

如何在获取另一个输入框的值的keyup事件中替换文本区域中的特定文本

如何将在tkinter的输入框中输入的文本从一个函数传递给另一个函数?

在Angular 2中单击时如何将输入值传递给另一个组件?

在另一个选项中显示输入字段值 更改输入值时选择选项值

如何自动关注React中的特定输入字段(单击另一个元素之后)?

使用jQuery,当我在输入框之外单击时如何更改输入元素的值?

当给另一个输入文本另一个值时,自动在输入文本中插入值

当两个输入框中的任何一个有输入时,如何自动将输入框的值设置为相反的数字?

为什么更改一个输入中的值也会更改另一个输入中的值?

在 react 中输入另一个组件时,如何从组件中删除 className

如何将下拉列表中的一个值附加到输入框的末尾

如何使用 React Hooks 在另一个组件中获取表单的输入值

更改另一个选择框的值时如何在一个选择框中填充值

用复选框中的另一个输入自动填充同一个类中的多个输入框

从输入框中单击时未更新setTimeout()值