默认情况下,我希望我的lastMessage
道具是用一个id的对象无法正常工作。但下面的代码,它出现为null
。阵营defaultProps预期
代码:
const App = ({ lastMessage }) => { // lastMessage is currently null
return (
<Message lastMessage={lastMessage} />
)
}
class Message extends Component {
constructor(props) {
super(props)
}
componentWillReceiveProps(nextProps) {
const data = [];
if (nextProps.lastMessage.id !== this.props.lastMessage.id) {
log.debug('woohoo');
// do something ...
}
}
render() {
return (
// something...
);
}
}
Message.defaultProps = {
lastMessage: {
id: 0,
},
};
在我App
组件我通过lastMessage
为null
到Message
组件。但我在Message
组件设置defaultProps
:
Message.defaultProps = {
lastMessage: {
id: 0,
},
我希望lastMessage
要与一个ID的对象,但它仍然是零。
const App =() => {
return (
<Message />
)
}
然后消息组件创建lastMessage
defaultProp
作为一个对象:那么,如果lastMessage
是null
更奇怪的是,如果我删除lastMessage道具在我的应用程序组件我的应用程序崩溃,因为nextProps.lastMessage.id
不起作用一个ID。
如果我的道具是空我想用默认值传递。我想是这样的,但它仍然不能正常工作:
const App = ({ lastMessage = { id: 0 } }) => { // lastMessage is still null
return (
<Message lastMessage={lastMessage} />
)
}
我不能正确设置defaultProps?
显式地传递'null'对于proptypes验证是非常有价值的。如果你传递'undefined'而不是它会工作。无论如何,我会编辑if语句,而不是检查'lastMessage'是在尝试访问它上面的'id'之前计算为true的东西。 – trixn