2017-08-13 49 views
1

我想映射一个状态,但是状态(状态的名称是“任务”,它是父状态的子状态称为“时间表”,“时间表“状态已经使用componentWillMount定义)仍然未定义直到一个动作创建者已经被触发(点击一个按钮)在我的页面内。但是,我已经在jsx中定义了timesheet.task.map,因此页面无法加载,并显示错误“无法读取未定义的属性映射”。 code 因此,您可以在这里看到,我想从触发事件时调用的状态(它在页面呈现时仍然未定义)映射一个'选择'选项列表,但页面不会加载,因为当页面首次加载时,timeheet.task仍未定义。初始化状态起作用,解决页面第一次呈现时undefined

你有任何想法如何解决这个问题吗?我正在考虑初始化状态,但我不知道该怎么做。非常感谢!

回答

0

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

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

根据您的页面布局,您可能希望只创建一个小的组成部分,以作为注入有条件的,因为你等待你的价值被填充。

+0

对不起,但它给我的网页加载时会有无限的加载,因为当它调用另一个动作创建器(它被放置在componentWillMount中)时,它自身的“按钮”会被渲染。我正在考虑创建一个构造函数来给timeheet.task一个默认值,但我不知道该怎么写。你有什么主意吗? –

相关问题