我如何在我的 reducer 中允许多个语句?
How do I allow for multiple statements in my reducer?
我被迫使用redux-actions。在我的减速器中,这段代码有效:
return handleActions({
[FOOBAR]: (state) => ({
...state, value: 'the user clicked something 2'
})
}, {})
但是,在减速器中我想 console.log
一些东西。我该怎么做?
您的代码当前 return 是箭头函数中的一个对象,用于指示后续状态。您可以使用 a block 来容纳多个语句,包括您的 console.log
,而不仅仅是隐式的 return,而不是使用 shorthand 箭头函数语法来隐式 return 对象:
[FOOBAR]: (state) => {
console.log('Inside FOOBAR action')
return {
...state, value: 'the user clicked something 2'
}
}
由于缺少 ()
1,{}
表示块而不是对象文字。因此,您可以在块内使用其他语句,但您必须 return 您的后续状态对象,因为它不会隐式 return.
这里 {}
是块而不是对象文字的原因是因为 arrow functions 有多种可接受的语法,其中一个使用块:
(param1, param2, …, paramN) => { statements }
JavaScript 引擎将 {}
解释为一个块。所以,你的代码有 ({})
这确实意味着对象文字,因为括号只能 包裹在表达式 周围。由于块不是表达式,对象文字 是表达式,引擎将其解释为对象文字。
以更详细的样式重写上面的箭头函数,这样您就可以包含多个语句。然后你可以输入控制台日志。
return handleActions({
[FOOBAR]: (state) => {
console.log('I LOG ALL THE THINGS');
return {...state, value: 'the user clicked something 2'};
}
}, {});
我被迫使用redux-actions。在我的减速器中,这段代码有效:
return handleActions({
[FOOBAR]: (state) => ({
...state, value: 'the user clicked something 2'
})
}, {})
但是,在减速器中我想 console.log
一些东西。我该怎么做?
您的代码当前 return 是箭头函数中的一个对象,用于指示后续状态。您可以使用 a block 来容纳多个语句,包括您的 console.log
,而不仅仅是隐式的 return,而不是使用 shorthand 箭头函数语法来隐式 return 对象:
[FOOBAR]: (state) => {
console.log('Inside FOOBAR action')
return {
...state, value: 'the user clicked something 2'
}
}
由于缺少 ()
1,{}
表示块而不是对象文字。因此,您可以在块内使用其他语句,但您必须 return 您的后续状态对象,因为它不会隐式 return.
这里 {}
是块而不是对象文字的原因是因为 arrow functions 有多种可接受的语法,其中一个使用块:
(param1, param2, …, paramN) => { statements }
JavaScript 引擎将 {}
解释为一个块。所以,你的代码有 ({})
这确实意味着对象文字,因为括号只能 包裹在表达式 周围。由于块不是表达式,对象文字 是表达式,引擎将其解释为对象文字。
以更详细的样式重写上面的箭头函数,这样您就可以包含多个语句。然后你可以输入控制台日志。
return handleActions({
[FOOBAR]: (state) => {
console.log('I LOG ALL THE THINGS');
return {...state, value: 'the user clicked something 2'};
}
}, {});