在setState不起作用后,Reactjs将值作为prop传递

时间:2018-02-22 16:47:52

标签: javascript reactjs components state

当用户点击打开时,我试图通过道具传递给模态对象。我从点击的行中收到了值,但我的模态无法从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);

当在模态组件内部时,我得到了未定义。在此之前,我得到了用户对象。

由于

1 个答案:

答案 0 :(得分:1)

在您的组件内部,您只是检查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
     })
    }
}