Ale*_*lex 4 javascript reactjs redux react-redux
我正在尝试学习对redux的反应,我已经阅读了redux的主要文档,我们应该将动作类型存储到一个js文件中,然后导出所有常量并将其用作类型,例如,它是简单模式:
export function itemsAction(items) {
return {
type: 'ITEMS',
data: items
}
}Run Code Online (Sandbox Code Playgroud)
但显然我应该采用以下格式:
import { types } from './Types';
export function itemsAction(items) {
return {
type: types.ITEMS,
data: items
}
}Run Code Online (Sandbox Code Playgroud)
但是这个技巧的主要好处是什么?操作是固定的,永远不会改变,为什么我应该从变量设置操作类型并导入所有类型?
谢谢
因为很高兴知道您使用的是对象属性,而不是原始字符串,因为原始字符串容易出现错字。举个例子:
export function itemsAction(items) {
return {
type: 'ITEMS',
data: items
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设我有一个reducer来处理也使用原始字符串的操作:
const todos = (state = [], action) => {
switch (action.type) {
case 'ITESM':
return state.map(item => item.something = "potato")
default:
return state
}
}
Run Code Online (Sandbox Code Playgroud)
在化简器中,我为它的情况拼错了动作类型。但是由于Javascript和Redux的工作方式,它不会在IDE lint中作为错误出现,也不会在执行代码时产生任何错误。您将分派该操作,它将以静默方式失败。什么都不会发生,没有行动,没有错误,什么也没有。调试可能会很痛苦。
此外,如果要更改动作名称该怎么办。最好只是更改对象中的值,而不是在整个项目中进行大量查找和替换,以免您覆盖过程中不是您想要的内容,这是很好的。
另外,将所有动作类型都放在一个地方也很好,因此您可以浏览并查看可用的内容,而不用浏览所有动作文件。一旦您的项目发展壮大,您一定会很高兴。
另外,在Typescript上它特别有用,因为如果您尝试使用尚未定义的操作,甚至都无法构建,那么您就可以获得一定的构建时间安全性。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |