Javascript 为什么redux上的默认状态初始化为false而不是空?

Javascript 为什么redux上的默认状态初始化为false而不是空?,javascript,reactjs,types,redux,react-boilerplate,Javascript,Reactjs,Types,Redux,React Boilerplate,我不确定这是否是常见的做法,但当我浏览这个非常流行的应用程序时,我注意到存储键的默认值总是设置为false,而不管实际类型是Array、Object、Number还是String // The initial state of the App const initialState = fromJS({ loading: false, error: false, currentUser: false, // String userData: { repositorie

我不确定这是否是常见的做法,但当我浏览这个非常流行的应用程序时,我注意到存储键的默认值总是设置为
false
,而不管实际类型是
Array
Object
Number
还是
String

// The initial state of the App
const initialState = fromJS({
  loading: false,
  error: false,
  currentUser: false,    // String
  userData: {
    repositories: false, // Array of Objects
  },
});

function appReducer(state = initialState, action) {
  .....
这里有最佳实践吗?因为在这个实现中,JSX组件中的数据类型需要是
Array或Boolean
,而不仅仅是
Array
,这是该类型首先应该是的

repos:PropTypes.oneOfType([PropTypes.array,PropTypes.bool]),


提前谢谢。

这不会总是
数组/布尔值。当我们在redux中存储API响应时,它通常采用
JSON
格式,所以它完全取决于数据类型

以此为例:

const INITIAL_STATE = { 
  isSearchDestinationAvailable: false,
  searchedDestination: {},
  destination: []
};
如果在初始化状态时更改了它们的任何数据类型,则在验证更新的道具时,应用程序可能会崩溃
卸载/清除redux存储
。我和他们玩得很开心


请随时询问任何进一步的问题。

我确信,这不是最佳做法。您应该始终将redux状态初始化为其相应的数据类型。我没有任何证据可以证明这一点,但根据我对javascript工作原理的理解,它会更简单、更高效。在我看来,这不是一个好的做法。也许你应该在回购协议中提出一个问题。在这种情况下,我们知道
repos
数据将是一个数组,因为它基于GitHub API。根据存储设计,数据类型将仅为布尔或数组,因为我们将其设置为布尔或数组。我不太明白你的解释。可能有一种情况,当你把道具传给一个来自redux的孩子时,你需要验证一些条件渲染或语句。您需要有适当的数据类型,否则可能会执行非预期的代码块。好的,那么您认为给出初始状态的方法是好的还是坏的?您提到的似乎是如何在
JSX
文件中定义
PropTypes
,而不是如何初始化Redux stateyes@nikjohn初始化Redux state是一件必须的事情,但要使用您期望的适当数据类型。当出现嵌套对象初始状态时,确实需要小心。当我们实际经历这些情况时,这一点会更加清楚。我希望你已经明白了重点。