Javascript 设置状态不工作后,将值作为道具传递
当用户点击打开时,我试图通过一个道具将一个对象传递给一个模态。我正在从单击的行接收值,但我的模式无法从Javascript 设置状态不工作后,将值作为道具传递,javascript,reactjs,components,state,Javascript,Reactjs,Components,State,当用户点击打开时,我试图通过一个道具将一个对象传递给一个模态。我正在从单击的行接收值,但我的模式无法从this.props读取值,并且我得到了一个未定义的值。我正在正确设置状态值并将其传递给模态组件 模式呼叫 <Modal toggleModal={this.toggleModal} show={this.state.isOpen} onClose={this.toggleModal} user={this.state.user} /> 在模态组件的渲染部分内部
this.props
读取值,并且我得到了一个未定义的值。我正在正确设置状态值并将其传递给模态组件
模式呼叫
<Modal toggleModal={this.toggleModal} show={this.state.isOpen}
onClose={this.toggleModal} user={this.state.user} />
在模态组件的渲染部分内部
if (this.props.user === null) {
userFound = 'Not found'
}
console.log(this.props.user);
当在模态组件内部时,我得到未定义的。在这之前的任何地方,我都会得到用户对象
谢谢在您的组件中,您只是在检查null而不是
未定义的
,如果您想检查未定义的,其中一种方法是使用typeof
用户类型!==“未定义”
因此,它将是这样的(如果您想同时检查两个或一个,您可以相应地对其进行ammend):
如果块
toggleModal = (user) => {
if (typeof user !== "undefined" && user !== null) {
this.setState({
isOpen: !this.state.isOpen,
user: user
})
}
}
在
setState()
完成后尝试forceUpdate()
:this.setState({isOpen:!this.state.isOpen,user:userData},()=>{console.log('user data changed');this.forceUpdate();})
您只检查未定义的user=undefined
,因为null!==undefined
为true,请在toggleModal方法内执行console.log(用户)
并检查值。感谢您指出错误。当我将值传递给模态组件时,我仍然会得到一个未定义的错误。这一部分很有帮助,但是在模态组件内部,我仍然会得到一个未定义的错误,好像This.props.user
在应该有用户对象时失败。这是因为当setState是异步操作时,当用户数据按此线程上的建议设置时,能否显示初始化状态的位置,即this.state={}
我正在调用forceUpdate()。在App.js内部,我有constructor(props){super(props)this.state={isOpen:false,数据类型:'user',user:{}}this.changeSearchState=this.changeSearchState.bind(this);}
如果我只是使用props值,我是否需要在模态组件上有一个状态?当我从App.js->中获取.log时,我可以看到用户对象,但当从模态组件中调用this.props.user
时,它会返回到未定义状态。在您的模态组件中,你能把这个.props.log记录下来,看看你的道具接线是否正确吗?如果可能的话,你能用整个模态组件来更新你的代码,而不仅仅是toggleModal
toggleModal = (user) => {
var userData = {};
if (typeof user !== "undefined" && user !== null) {
userData = user
}
toggleModal = (user) => {
if (typeof user !== "undefined" && user !== null) {
this.setState({
isOpen: !this.state.isOpen,
user: user
})
}
}