程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从类到函数 React大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从类到函数 React?

开发过程中遇到从类到函数 React的问题如何解决?下面主要结合日常开发的经验,给出你关于从类到函数 React的解决方法建议,希望对你解决从类到函数 React有所启发或帮助;

我正在尝试将类组件更改为函数组件,但我不确定如何继续。我试图更改 useState 的状态,但是我无法将信息传递给状态本身,因此例如 URL 始终为空,因此它不起作用。任何人都可以提供有关如何修复它的提示吗?

class Recording extends Component {
  state = {
    audioDetails: {
      url: null,blob: null,chunks: null,duration: {
        h: 0,m: 0,s: 0,},};

  handleAudioStop(data) {
    this.setState({ audioDetails: data });
  }

  handleRest() {
    const reset = {
      url: null,};
    this.setState({ audioDetails: reset });
  }

  render() {
    return (
      <div>
        <Recorder
          record={truE}
          audioURL={this.state.audioDetailS.Url}
          showUIAudio
          handleAudioStop={(data) => this.handleAudioStop(data)}
          handleRest={() => this.handleRest()}
        />
      </div>
    );
  }
}

export default Recording;
export default function Recording(props) {
  const [rec,setRec] = useState({
    audioDetails: {
      url: null,});

  const handleAudioStop = (data) => {
    setRec({ audioDetails: data });
    console.log(rec);
  };

  const handleRest = () => {
    const reset = {
      url: null,};
    setRec({ audioDetails: reset });
  };

  return (
    <div>
      <Recorder
        record={truE}
        audioURL={props.audioDetailS.Url}
        showUIAudio
        handleAudioStop={(data) => handleAudioStop(data)}
        handleRest={() => handleRest()}
      />
    </div>
  );
}

解决方法

来自Docs:

与类组件中的 setState 方法不同,useState 不会自动合并更新对象。您可以通过将函数更新程序形式与对象扩展语法相结合来复制此行为:

1
2
5
125

另一个选项是 useReducer,它更适合管理包含多个子值的状态对象。

,

audioURL={props.audioDetailS.Url}@H_450_27@ 中,您不能在此处编写道具。因为 props 在子组件中使用,当 child 从 perent 获取数据时,child 使用 props 来获取数据。正如我在您的类组件中看到的,您使用this.state.audioDetailS.Url@H_450_27@。所以你需要做的是更正你的代码audioURL={rec.audioDetailS.Url}@H_450_27@。

大佬总结

以上是大佬教程为你收集整理的从类到函数 React全部内容,希望文章能够帮你解决从类到函数 React所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: