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

标签 javascript reactjs

这种东西的最佳实践是什么?

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);
    });
  };

代码如下 https://codesandbox.io/s/cold-dust-ygfos

最佳答案

都没有。每个功能都应该有一个明确定义的目标(Single Responsibility Principle)。一个处理状态变化,另一个处理数据获取等副作用。您不应该将行为耦合在一起。

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

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

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

关于javascript - 在 React 中,在下拉列表中进行提取时我应该依赖哪个值? e.target 值或来自状态的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59701170/

相关文章:

reactjs - React Native无法从 '10'确定java版本

javascript - 防止上下文菜单内出现上下文菜单 EXT js

javascript - 使用jQuery获取div.class的内容替换title标签的内容

javascript - JSFiddle : Please us POST request

javascript - Socket.io 和 Jquery 附带不需要的附加数据

javascript - 即使reactjs收到了数据,为什么我的笔记没有显示/更新?

javascript - react 中的 setTimeout 函数导致类型错误

reactjs - React router-4 中未定义自定义 props

javascript - 拒绝在帧中显示 'http://vimeo.com/27577981',因为它将 'X-Frame-Options' 设置为 'SAMEORIGIN'

javascript - :-ms-input-placeholder is not working in IE9 in Windows 7 OS