我正在使用React Native构建待办事项应用
当我单击待办事项时,会打开一个组件,可以在其中编辑有关它的所有信息(小时,日期,待办事项名称,说明,标签等)。
我在为每个属性创建一个函数还是使用“开关”创建一个大函数之间犹豫。
我觉得有一个大功能可以使它变得更加清晰,但是我不知道将来对性能和可维护性的影响。
例如:
editName = () => {
dispatch(..)
}
editDescription = () => {
dispatch(...)
}
editHour = () => {
dispatch(...)
}
...
或
todo = () => {
switch(){
case 'editName':
...
case 'editDescription':
...
case 'editHour':
...
...
}
答案 0 :(得分:2)
在react-redux上下文中,通常将使用选项A。创建一个名为mapDispatchToProps()
的函数,并将其与connect()挂钩到存储中。在这种情况下,性能差异可以忽略不计,并且易于维护(只需添加和删除键值对)。
const mapDispatchToProps = (dispatch) => {
return {
editName: (args) => {
dispatch(editName(args))
},
editDescription = () => {
dispatch(editDescription(args))
}
}
}
export default connect(null, mapDispatchTorProps)(Component)
在选项B(切换用例)中,出现了如何访问dispatch
方法的问题,因为该方法仅在与商店直接交互时可用。您不能从其他事件处理程序调用{{1}}。目前还不清楚如何将分派绑定到返回的案例。
您的待办事项功能必须如下所示:
dispatch
但是同时,您将如何传递const todo = (dispatch, actionType, actionArgs) => {
switch(actionType){
case "editname":
dispatch(editname(actionArgs))
}
}
来使切换情况正常工作,以及动作参数又如何呢?然后回到如何甚至可以访问商店外部的调度。
action-type
不可执行,调度未定义。
这是一种执行反模式的绕行方式,只会增加代码的复杂性,而选项A非常干净且易于使用。