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

yxyvkwin  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(108)

我有一个关于React Native中reducer的简短问题。
为什么我必须这样写代码:

import { combineReducers } from 'redux';

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

而不是这样:

import { combineReducers } from 'redux';

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

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

b0zn9rqh

b0zn9rqh1#

reducer的工作是应用一些输入来更新状态。reducer在执行操作后返回新的状态。它在一个输入上工作,并且可能在不同的输入上返回不同的状态,因此它是一个函数。
如果使用第二种方法,则生成一个固定的state值,这对于某些用例可能是有效的。

km0tfn4u

km0tfn4u2#

首先,你需要知道它们是什么。
() => []是一个arrow function,它返回一个空数组,但[]只是一个空数组。
参见doc的注解:
reducers(对象):其值对应于需要组合成一个的不同归约函数的对象。
所以,你需要在reducer中传递一个函数。所以你将使用() => []而不是[]
我从来没有在combineReducers中使用过这样的方法。这是用来组合不同的reducer的,比如:

combineReducers({
  reducer1,
  reducer2
})

前面的示例只是的别名:

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

相关问题