【问题标题】:initialize state react, to solve undefined when the page first rendered初始化状态react,解决页面首次渲染时未定义的问题
【发布时间】:2017-08-13 17:30:33
【问题描述】:

我想映射一个状态,但是那个状态(状态的名称是“task”,它是父状态的子状态,称为“timesheet”,“timesheet”状态已经使用 componentWillMount 定义)仍然未定义直到在我的页面内触发了动作创建者(单击按钮)。但是,我已经在 jsx 中定义了 timesheet.task.map,因此页面无法加载,并显示错误“无法读取未定义的属性映射”。 code 因此,正如您在此处看到的,我想从触发事件时调用的状态映射“选择”选项列表(在页面呈现时它仍然未定义),但由于时间表不会加载页面。页面第一次加载时任务仍未定义

您知道如何解决这个问题吗?我在想初始化状态,但我不知道怎么做。非常感谢!

【问题讨论】:

    标签: javascript reactjs dictionary initialization state


    【解决方案1】:

    很常见的情况。在render() 的顶部 - 只需添加一个条件来检查该值是否有效.. 类似:

    if (!this.state.timesheet.task) {
      return <p> waiting for my value </p> // add any generic component to here that would await your value 
    }
    

    根据您的页面布局,您可能只想创建一个小组件作为条件注入,等待您的值被填充。

    【讨论】:

    • 我很抱歉,但这会在我的页面加载时无限加载,因为它自己的“按钮”是在调用另一个动作创建者时呈现的(它被放置在 componentWillMount 内)。我正在考虑创建一个构造函数来为 timesheet.task 提供默认值,但我不知道如何编写。你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2021-09-13
    • 2016-04-03
    • 2021-05-02
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    相关资源
    最近更新 更多