大多數教程在線表明裏面的初始化狀態的屬性應該是「」(如果它是一個字符串),如:如果裏面defaultState屬性爲空或「」
let defaultState = Immutable.fromJS({
viewData: {
id: '',
name: '',
alist: []
}
});
但是,如果你不是有的明確說明哪些屬性有一定分量的習慣採用,如:
function mapStateToProps(state) {
return viewData: state.someReducer.get('data');
}
someContainer.propTypes = {
data: ImmutablePropTypes.mapContains({
id: React.PropTypes.string.isRequired,
name: React.PropTypes.string.isRequired,
aList: ImmutablePropTypes.list.isRequired
}),
};
比我會得到「無法propType」是,如果任何屬性得到了來自減速刪除,isRequired
莫名其妙的感覺多餘的,因爲唯一的出路它會一直給出一個空字符串而不是傳遞給someContainer子組件。
但是,如果我做的:
let defaultState = Immutable.fromJS({
data: {
id: null,
name: null,
aList: null
}
});
比我會得到一個失敗的proptype如果減速,沒有填充狀態,心不是這樣想?然而,因爲我很少看到其他人將道具設置爲空,我覺得有一個很好的理由不會。因爲它
而且,與空法狀態嵌套地圖吃不了混亂,甚至比可視數據爲空,但你失去了與沒有顯示它真的會得到什麼樣的數據信息:
let defaultState = Immutable.fromJS({
viewData: { // Shouldnt this be null than as well?
id: null,
name: null,
hierarchies: { // and this
one: null,
two: null
}
}
});
我喜歡你的說法 - 「一個空值表示值尚未提供,而一個空字符串意味着一個確實已經確定,但它僅僅是空的」,這讓很多道理。但是,當我嘗試了更多,也就是給我的整個狀態空我跑與地圖和性能問題,這些地圖 – user3711421
我想你實際上是在問兩個問題裏 - 那是正確的,我怎麼會接近與immutablejs。如前所述,它確實意味着你的應用程序需要理解null和empty之間的區別(這是一件好事,因爲它應該理解這個區別) - 你可能需要在那裏進行一些空的檢查。 – Chris
我想我是。我認爲你所說的話有很大的意義,但爲什麼沒有教程制定者這樣做?像丹阿布拉莫夫和泰勒mccginnis誰是在反應/ Redux的社區比較大的.....還有看到我更新的代碼:) .. – user3711421