【问题标题】:converting class to hooks array将类转换为钩子数组
【发布时间】:2021-08-16 12:25:19
【问题描述】:

我正在尝试将类转换为钩子,我的问题是这部分 '[event.target.id]: event.target.value,',如何转换它?

我的代码:

 this.setState({
      helperText: {
        ...this.state.helperText,
        [event.target.id]: helperText,
      },
      error: {
        ...this.state.error,
        [event.target.id]: error,
      },
      [event.target.id]: event.target.value,
    });

我做了什么:

setHelperText({
    ...helperText,
    [event.target.id]: helperText,
  })
setError({
    ...error,
    [event.target.id]: error,
  })

如何转换最后一部分?

【问题讨论】:

  • 能否贴出您要转换的类组件和函数组件代码?
  • 您是否在某处追踪event.target.id?否则,您如何访问这些属性?

标签: javascript reactjs typescript react-hooks


【解决方案1】:

您可以将记录或地图放入useState

const [values, setValues] = useState({});

setValues(prevValues => ({ ...prevValues, [event.target.id]: event.target.value }));

const [values, setValues] = useState(new Map());

setValue(prevValues => new Map(prevValues).set(event.target.id, event.target.value))

此外,您可能希望切换结构以一次更新所有内容:

const [state, setState] = useState({});

setState(prevState => {
  const value = {
    value: event.target.value,
    helperText,
    error,
  };

  return { ...prevState, [event.target.id]: value };
});

注意!如果您的下一个值取决于前一个值,您应该使用 setState 的函数版本。 https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous

【讨论】:

  • 最后一次更新everyting,这两个在你的代码中:[event.target.id]: helperText and [event.target.id]: error,
  • @waleedd32 我是根据您的第一个代码 sn-p 制作的。期望提供此值,就像event
猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 2020-09-17
相关资源
最近更新 更多