【发布时间】:2019-07-23 03:08:21
【问题描述】:
我目前正在使用 React-Redux,但它是一个非常简单的应用程序。 该应用程序只是简单地获取用户 ID、密码和用户想要进入的服务器地址。它进入服务器并在服务器中运行脚本。但在我的问题中,应用程序的功能并不重要。
我只需要应用程序的 3 个状态(用户名、密码和服务器地址)。
但是,我有三个不同的 reducer 和 action,它们在不同的状态下做同样的事情。
例如,
userReducer.js
// reducer 函数采用默认状态和要应用的操作
import { UPDATE_USER } from '../actions/userActions'
export default function userReducer(state = '', { type, payload }) {
switch (type) {
case UPDATE_USER:
return payload;
default:
return state;
}
}
passwordReducer.js
// reducer functions takes a default state and an action to apply
import { UPDATE_PASSWORD } from '../actions/passwordActions'
export default function passwordReducer(state = '', { type, payload }) {
switch (type) {
case UPDATE_PASSWORD:
return payload;
default:
return state;
}
}
routerReducer.js // 这是服务器
// reducer 函数采用默认状态和要应用的操作
import { UPDATE_ROUTER } from '../actions/routerActions'
export default function routerReducer(state = '', { type, payload }) {
switch (type) {
case UPDATE_ROUTER:
return payload;
default:
return state;
}
}
以及如下所示的操作:
export const UPDATE_PASSWORD = 'updatePassword'
export function updatePassword(newPassword) {
return {
type: UPDATE_PASSWORD,
payload: {
'newPassword': newPassword
}
}
}
其他两个变量相同。
然后在我的组件中,我只是将mapActionsToProps 连接到组件并放置了 3 个执行相同操作的函数(更新状态)
class Container extends React.Component {
constructor(props) {
super(props)
}
onUpdateUser = (e) => {
this.props.onUpdateUser(e.target.value)
}
onUpdatePassword = (e) => {
this.props.onUpdatePassword(e.target.value)
}
onUpdateRouter = (e) => {
this.props.onUpdateRouter(e.target.value)
}
...
像这样使用它
这有点工作,但我不确定这是否是使用 React-Redux 的正确方法。首先,它们是重复的,似乎不是一个好习惯。但是,我想不出一种方法来以 React-Redux 的方式更新每个状态,而不只是放置类似的代码。
有什么帮助吗?
【问题讨论】:
-
不是直接在Reducer中返回payload对象,而是在Reducer中创建状态,存储并返回payload对象。
标签: javascript reactjs redux react-redux