Javascript 在React中,在下拉列表中进行提取时,应该依赖哪个值?e.目标值或来自状态的值

Javascript 在React中,在下拉列表中进行提取时,应该依赖哪个值?e.目标值或来自状态的值,javascript,reactjs,Javascript,Reactjs,这类东西的最佳实践是什么 handleChange = e => { const { value } = e.target; this.setState({ selectedOption: value }); this.fetchrepos(value); }; handleChangeVersion2 = e => { const { value } = e.target; this.setState({ selectedOptio

这类东西的最佳实践是什么

handleChange = e => {
    const { value } = e.target;
    this.setState({ selectedOption: value });
    this.fetchrepos(value);
  };



handleChangeVersion2 = e => {
    const { value } = e.target;
    this.setState({ selectedOption: value }, () => {
      this.fetchrepos(this.state.selectedOption);
    });
  };
这是密码

由于
setState
是一个异步函数,因此您应该中继
e.target
值。但是,如果在状态更改时触发api调用,则依赖状态值并在生命周期方法中触发api调用。

您应该依赖
e.target
值,因为
setState
是一个异步函数。但是,如果在状态更改时触发api调用,则依赖状态值并在生命周期方法中触发api调用。

两者都不是。每个功能都应有一个明确定义的目标()。一个用于处理状态更改,另一个用于处理诸如数据获取之类的副作用。你不应该把行为结合在一起

您应该使用一个组件生命周期函数来获取状态更新中的选择值,并进行数据提取
componentDidUpdate
就是其中之一

handleChange = e => {
  const { value } = e.target;
  this.setState({ selectedOption: value });
};

componentDidUpdate(prevState) {
  if (prevState.selectedOption !== this.state.selectedOption) {
    fetchRepos(this.state.selectedOption);
  }
}

都不是。每个功能都应有一个明确定义的目标()。一个用于处理状态更改,另一个用于处理诸如数据获取之类的副作用。你不应该把行为结合在一起

您应该使用一个组件生命周期函数来获取状态更新中的选择值,并进行数据提取
componentDidUpdate
就是其中之一

handleChange = e => {
  const { value } = e.target;
  this.setState({ selectedOption: value });
};

componentDidUpdate(prevState) {
  if (prevState.selectedOption !== this.state.selectedOption) {
    fetchRepos(this.state.selectedOption);
  }
}

您所做的也是将api作为
setState()


您所做的也是将api作为
setState()


这两种方法肯定都能奏效
setState
是异步的,因此如果需要确保在调用
setState
后事件的顺序,可以像在方法2中一样传递回调函数。而在方法1中,您应该依赖
event.target
中的
value
,而不是state。两者都可以肯定地完成任务
setState
是异步的,因此如果需要确保在调用
setState
后事件的顺序,可以像在方法2中一样传递回调函数。而在方法1中,您应该依赖
event.target
中的
value
,而不是state。谢谢您,先生!!!。您推荐了哪些资源来学习React最佳实践?@ChinZhao问得好!对我来说,这是对react文档的大量消费,阅读web上的文章,阅读通用软件设计文章。。。基本上尽可能多地学习新的东西。谢谢你,先生!!!。您推荐了哪些资源来学习React最佳实践?@ChinZhao问得好!对我来说,这是对react文档的大量消费,阅读web上的文章,阅读通用软件设计文章。。。基本上,尽可能多地尝试学习新的东西。