为什么我们使用()=> []而不是[]?

时间:2018-09-11 08:43:36

标签: javascript reactjs react-native redux

我对React Native中的reducer有一个简短的问题

为什么我必须这样编写代码:

import { combineReducers } from 'redux';

export default combineReducers({
    reducerKey : () => []
});

代替此:

import { combineReducers } from 'redux';

export default combineReducers({
    reducerKey : []
});

基本上:为什么它必须是一个函数? 谢谢!

2 个答案:

答案 0 :(得分:3)

Reducer的工作是应用一些输入来更新状态。执行操作后,reducer返回新状态。它对输入起作用,并且在不同的输入上可能返回不同的状态,因此它是一个函数。

如果使用第二种方法,则会生成一个固定的state值,这对于某些用例可能是有效的。但通常,您会想使用一个函数。

答案 1 :(得分:2)

首先,您需要知道它们是什么?

() => []是一个arrow function,它返回一个空数组,但是[]只是一个空数组。


请参阅文档的note

  

reducers(Object):一个对象,其值对应于需要组合为一个的不同归约函数。

因此,您需要在reducer中传递一个函数。因此,您将使用() => []而不是[]


我从没用过CombineReducers这样的东西。这用于组合不同的减速器,例如:

combineReducers({
  reducer1,
  reducer2
})

前面的示例只是以下内容的别名:

combineReducers({
  reducer1: reducer1,
  reducer2: reducer2
})