我想在我的应用程序的侧边栏中显示更新的州名,我的功能正常,因为我可以在控制台中看到名称PRINTED两次但由于某种原因我无法在应用程序屏幕上显示名称值(显示起始值) ""),我想我可能会使用错误的生命周期方法,有人可以帮助我吗?
SELECT '{ "a": 1, "b": 2, "c": 3 }'::jsonb - '{a,b}'::text[];
?column?
----------
{"c": 3}
(1 row)
答案 0 :(得分:1)
this.state.name.value = this.props.User.userData
请勿直接改变您的状态,因为它不会重新渲染组件,而是使用setState
方法,如下所示
this.setState({
name: this.props.User.userData
});
答案 1 :(得分:0)
避免在componentWillMount()
中进行异步初始化在安装发生之前立即调用componentWillMount()。它 在render()之前调用,因此在此方法中设置状态 不会触发重新渲染。避免引入任何副作用或 订阅此方法。
将componentWillMount
替换为componentDidMount
。应该工作
答案 2 :(得分:0)
您使用的this.state.name.value
不正确。它设置状态但实际上并不会导致组件重新呈现自身。相反,您需要使用setState方法来更改状态的值。这将调用在状态更改后重新呈现组件。
该方法的例子是
this.setState({
name: this.propos.User.userData
});
虽然这种方法有效,但不建议改变状态值。根据准则,各国需要被视为不可改变的。
答案 3 :(得分:0)
componentWillMount与构造函数没有多大差别 - 它也仅在初始安装生命周期中调用一次。许多人会试图使用此函数来发送获取数据的请求,并期望在初始渲染准备好之前数据可用。事实并非如此 - 虽然请求将在渲染之前初始化,但在调用渲染之前它将无法完成。
在这种情况下,this.setState可以解决问题。