Javascript 每次渲染组件时';让我们点击

Javascript 每次渲染组件时';让我们点击,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一张显示姓名和身份证的国家名单。 我希望能够编辑国家,所以我为每一行添加了编辑按钮。组件的结构如下所示: ListComponent -- Edit Component // will show a modal --- Modal Component ---- Form Component 我应该在modal打开时填写表格,现在的问题是: 我应该使用哪种生命周期方法填写表格 componentDidMount仅发射一次 componentdiddupdate不会在第一次调用时触发,而

我有一张显示姓名和身份证的国家名单。 我希望能够编辑国家,所以我为每一行添加了编辑按钮。组件的结构如下所示:

ListComponent
 -- Edit Component // will show a modal
 --- Modal Component
 ---- Form Component
我应该在modal打开时填写表格,现在的问题是: 我应该使用哪种生命周期方法填写表格

componentDidMount
仅发射一次

componentdiddupdate
不会在第一次调用时触发,而会在之后触发

代码:

  componentDidMount(prevProps, prevState) {
      if(this.props.status == 'update') {
        this.props.form.setFieldsValue({
          isForeign: this.props.country.isForeign,
          name: this.props.country.name,
        });
      }
  }

您可以使用组件willreceiveprops

componentWillReceiveProps:当特定道具更新到时执行 触发状态转换

我的代码库中的小示例

   componentWillReceiveProps(nextProps) {
            if (this.props.userId !== nextProps.userId) {
                    const url = `${ROLE_API}/${nextProps.userId}`;
                    Get(url).then(res => {
                            this.setState({rolesName: res.data.rolesName, 
                             currentUserRoles: res.data.currentUserRoles,
                             userId: res.data.userId});
                    });
            }
    }

如果要在类组件中处理启动和更新,必须同时使用这两种生命周期方法。这就是React为功能组件实现钩子以避免冗余的一个重要原因


谢谢您的建议,但第一次单击它不会触发,但第二次单击后触发。您对这类内容有什么建议吗?请尝试在componentDidUpdate中重复您的代码。不过,从父组件控制此表单似乎更好。在父组件中,您可以简单地使用状态控制这一切,而不必使用生命周期检查道具,然后执行对父组件的回调。