javascript - Reactjs 在 setState 不起作用后将值作为 Prop 传递

标签 javascript reactjs components state

当用户点击打开时,我试图通过 Prop 将对象传递给模态。我正在从单击的行中接收值,但我的模态无法从 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 ,如果你想检查 undefined 一种方法是使用 typeof

typeof user !== "undefined"

所以它会像(如果你想检查两者或一个,你可以相应地修改它):

toggleModal = (user) => {
  var userData = {};
  if (typeof user !== "undefined" && user !== null) {
  userData = user
}

如果 block

你可以将 this.setState 移到里面
toggleModal = (user) => {
    if (typeof user !== "undefined" && user !== null) {
      this.setState({
        isOpen: !this.state.isOpen,
        user: user
     })
    }
}

关于javascript - Reactjs 在 setState 不起作用后将值作为 Prop 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48932917/

相关文章:

javascript - 如何使用 JavaScript 检查单选按钮是否被选中?

javascript - 将主干模型绑定(bind)到 Marionette ItemView - 阻塞 .fetch()?

javascript - 为什么没有为我的 React 类调用 getInitialState?

reactjs - 状态在组件中用作 Prop ,状态更改不会重新渲染组件

javascript - 为什么这个悬停事件会在页面加载时触发?

javascript - 为什么 CoffeeScript 以这种方式编译单个参数函数?

javascript - 对象键循环不在 React 中呈现

css - React 使用来自另一个标签的 onClick 更改 className 的样式

java - Java Swing 的十六进制查看器/编辑器 GUI 组件?

java - 您如何在分离服务组件的同时正确处理 OSGi 中的日志记录?