无法读取空的 属性 - react.js 状态
Cannot read property of null - react.js state
我正在尝试使用 React 和 Firebase 制作一个待办事项列表应用程序。
这是一个单页应用程序(登录除外)。
在我的页面组件中,我调用了一个列表组件。
在我的列表组件中,我得到了我放入状态的 firebase 数据。
在 React Dev Tool 中,在我的列表组件中,我可以看到这样的状态:
list{items{...},listName:"exemple"}
所以,在我的 return 中,我试图像这样显示 listName 的值:{this.state.list.listName}
但是我有以下错误::无法读取 属性 'listName'
of null
这是我的列表组件:
class ListPage extends Component {
constructor(props) {
super(props);
this.state = {
list: null,
};
}
componentDidMount() {
this.listRef = db.ref(`users/${this.props.user.uid}/lists
${this.props.cle}`);
this.listRef.on('value', data=>{
this.setState({
list: data.val()
})
})
}
render() {
return (
<div>
<h1>List : {this.state.list.listName}</h1>
</div>
);
}
}
我哪里错了?
谢谢
原因是因为当你的组件第一次挂载时,状态列表是空的。只有当异步 firebase 响应返回时,它才会加载数据并变为非空。解决方案是检查它是否为空,因此在您的 render()
函数中更改此部分:
<h1>List : {this.state.list.listName}</h1>
对此:
{ this.state.list && <h1>List : {this.state.list.listName}</h1> }
一般来说,最好在访问对象的属性之前检查对象是否已定义。尤其是您在某些时候明确定义为 null 的那些。
我正在尝试使用 React 和 Firebase 制作一个待办事项列表应用程序。
这是一个单页应用程序(登录除外)。 在我的页面组件中,我调用了一个列表组件。 在我的列表组件中,我得到了我放入状态的 firebase 数据。 在 React Dev Tool 中,在我的列表组件中,我可以看到这样的状态:
list{items{...},listName:"exemple"}
所以,在我的 return 中,我试图像这样显示 listName 的值:{this.state.list.listName}
但是我有以下错误::无法读取 属性 'listName'
of null
这是我的列表组件:
class ListPage extends Component {
constructor(props) {
super(props);
this.state = {
list: null,
};
}
componentDidMount() {
this.listRef = db.ref(`users/${this.props.user.uid}/lists
${this.props.cle}`);
this.listRef.on('value', data=>{
this.setState({
list: data.val()
})
})
}
render() {
return (
<div>
<h1>List : {this.state.list.listName}</h1>
</div>
);
}
}
我哪里错了?
谢谢
原因是因为当你的组件第一次挂载时,状态列表是空的。只有当异步 firebase 响应返回时,它才会加载数据并变为非空。解决方案是检查它是否为空,因此在您的 render()
函数中更改此部分:
<h1>List : {this.state.list.listName}</h1>
对此:
{ this.state.list && <h1>List : {this.state.list.listName}</h1> }
一般来说,最好在访问对象的属性之前检查对象是否已定义。尤其是您在某些时候明确定义为 null 的那些。