当用户单击打开时,我试图通过道具将一个对象传递给模态。我正在从单击的行中接收值,但是我的模态无法从this.props
读取值,并且得到了未定义的值。我正在正确设置状态值,并将其传递给模态组件。
模态呼叫
<Modal toggleModal={this.toggleModal} show={this.state.isOpen}
onClose={this.toggleModal} user={this.state.user} />
设定状态值
toggleModal = (user) => {
var userData = {};
if (user !== null) {
userData = user
}
this.setState({
isOpen: !this.state.isOpen,
user: userData
},()=>{
console.log('User data changed');
})
}
在模态组件的渲染部分内部
if (this.props.user === null) {
userFound = 'Not found'
}
console.log(this.props.user);
在模态组件内部时,我不确定。在此之前,我到处都有用户对象。
谢谢
最佳答案
在组件内部,您只检查null而不是undefined
,如果要检查未定义的方法之一就是利用typeof
typeof user !== "undefined"
这样就好了(如果要同时检查一个或两个,可以相应地对其进行修改):
toggleModal = (user) => {
var userData = {};
if (typeof user !== "undefined" && user !== null) {
userData = user
}
如果
this.setState
,您可以在其中移动block
toggleModal = (user) => {
if (typeof user !== "undefined" && user !== null) {
this.setState({
isOpen: !this.state.isOpen,
user: user
})
}
}
关于javascript - setState不起作用后,ReactJS将值作为prop传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48932917/