デフォルトでは、私のlastMessage
propをidのオブジェクトにしたいと思います。しかし、下のコードではnull
となります。defaultPropsが正常に動作しない
コード:私のApp
コンポーネントで
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,
},
};
私はnull
Message
にコンポーネントとしてlastMessage
を渡します。しかし、私はMessage
コンポーネントにdefaultProps
を設定します。私はlastMessage
はidを持つオブジェクトであることを期待
Message.defaultProps = {
lastMessage: {
id: 0,
},
、しかしそれはまだnullです。 nextProps.lastMessage.id
が動作しない私のアプリがクラッシュしたので、私は私のアプリのコンポーネントでlastMessageの小道具を削除する場合lastMessage
がさえ知らない人null
されている場合は、:
const App =() => {
return (
<Message />
)
}
、メッセージコンポーネントが持つオブジェクトとしてlastMessage
defaultProp
を作成しますid。
私の小道具がnullの場合、デフォルト値で渡そうとしています。私はこのようなものを試しましたが、それでも動作しません:
const App = ({ lastMessage = { id: 0 } }) => { // lastMessage is still null
return (
<Message lastMessage={lastMessage} />
)
}
私はdefaultPropsを正しく設定していませんか?
明示的に 'null'なのでを渡す:あなたも考え出したとして、あなたはまた、デフォルトの小道具をこのように渡すことができ
proptypes検証のための値です。代わりに 'undefined'を渡すとうまくいくでしょう。とにかくif文を編集する代わりに、 'lastMessage'が真であると評価されてから' idMod'にアクセスしようとしています。 – trixn