重新渲染组件后,从状态中获取以前保存的值

时间:2019-05-10 19:24:02

标签: reactjs redux react-redux

我正在创建事件管理客户端服务器应用程序,其中管理面板提供了修改现有模块的功能。

当用户根据表中显示的模块信息单击编辑按钮时,会将唯一的模块ID传递给editModuleForm()以便修改数据库中的模块。

问题是我得到一个未定义的值,当编辑组件出于某种原因呈现时,模块ID传递了该值。该组件仅在用户单击“编辑”按钮时才需要渲染,而在单击“交叉”按钮时才需要删除。

Screenshot

这是我正在管理的状态,编辑面板在该状态下将黑白控制切换为true或false。

#include <algorithm>
//...
int main()
{
  std::vector<std::string> test = {"this is a test", "another a test"};
  std::unordered_set<std::string> stops = {"is", "test"};

  // Use std::transform
  std::transform(test.begin(), test.end(), test.begin(), 
                 [&](const std::string& s){return remove_stop_words(s, stops);});

  std::cout << "Changed words:\n";
  for ( auto& s : test )
    std::cout << s << "\n";
}

在编辑按钮代码中切换状态并传递模块ID

this.state = {
  editModuleDisplay: false,
}

在editModuleForm()

<i className="fa fa-pencil text-warning padding-left-lg iconStyles"
    onClick={ async () => {
        await this.editModuleForm(props.original.m_id)
        await this.setState({
            editModuleDisplay: true
        })
    }}
/>

在render()

editModuleForm = (id) => {
    console.log(id)  //logging the module id
return ( some JSX form )
}

我希望在编辑表单中具有模块ID,因此当用户修改模块时,我可以通过数据库中的唯一模块ID来修改模块。

快速说明:我对Redux不熟悉,因此,如果Redux有所帮助,请简要介绍。

2 个答案:

答案 0 :(得分:0)

根据您显示的代码,您正在尝试对一个函数而不是一个Promise进行异步调用。 editform不是Promise,所以您迫不及待。如果您要共享状态,则需要从父组件中传递状态,请根据您要执行的操作使用Context API或Redux。

答案 1 :(得分:0)

您可以将表单ID本身存储在react状态下并相应地传递:

editModuleForm = (id) => {
  this.setState({
   editingFormId:id
  })
    console.log(id)  //logging the module id
  return ( some JSX form )
}