大多数教程在线表明里面的初始化状态的属性应该是“”(如果它是一个字符串),如:如果里面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