我应该如何在redux中构建/传递我的数据或操作
How should I structure/pass my data or actions in redux
我现在正在像这样转换我的defaultState(我的整个reducer):
import _ from 'lodash';
import { SIGN_UP_STEP, RESET_SIGN_UP } from '../actions/sign-up';
const defaultState = {
ui: {
loading: false
}, metadata: {
step: 1,
code: null
},
data: {
name: null,
email: null,
password: null,
number: null,
access_token: null
}
}
export default function signUpReducer(state = defaultState, action) {
switch(action.type) {
case SIGN_UP_STEP:
return _.merge({}, state, action.data)
case RESET_SIGN_UP:
return defaultState;
default:
return state;
}
}
我现在的行动就像
import request from 'axios';
import _ from 'lodash';
const BACKEND_ROOT = process.env.API_ROOT || 'http://localhost:3000';
export const SIGN_UP_STEP = 'SIGN_UP_STEP';
export const RESET_SIGN_UP = 'RESET_SIGN_UP';
export function signUpStep(data) {
return {
type: SIGN_UP_STEP,
data
}
}
...
但现在我在思考我应该如何构建或如何做到这一点。如果我应该做从组件到动作或从动作到减速器的格式发送。
比如,我应该这样做吗:
// component
const signUpAction = SignUpActions.signUpStep({
step: 2,
name: this.refs.name.value,
email: this.refs.email.value,
password: this.refs.password.value
});
dispatch(signUpAction);
// action
export function signUpStep(data) {
return {
type: SIGN_UP_STEP,
{
metadata: {
step: data.step
},
data: data.data
}
}
}
或者先格式化后再发送?
// component
const signUpAction = SignUpActions.signUpStep({
metadata: {
step: 2,
},
data: {
name: this.refs.name.value,
email: this.refs.email.value,
password: this.refs.password.value
}
});
dispatch(signUpAction);
// action
export function signUpStep(data) {
return {
type: SIGN_UP_STEP,
data
}
}
我同意@Kai在评论中的观点,但为了更进一步,我更喜欢显示契约的行为。
export function signUpStep(name, email, password, ...args){
return { type: SIGN_UP_STEP,
metadata: {
step: 2
},
data: {name, email, password, ..args}
}
}
// to call
signUpStep("John", "john@example.com", "Pass1", "doej");
// to access "doej" parameter from function
const githubId = args[0];
显然,这都是个人偏好,但在上面的部分中,您现在在不阅读操作的情况下公开了操作所需的必要字段的明确约定。
相关文章:
- ajax请求成功,但可以'我看不到我的数据
- AngularJS过滤器不适用于我的数据:关联数组
- 为什么为我的数据表设置类没有任何作用
- 我应该如何在redux中构建/传递我的数据或操作
- 如何取回我的数据
- 为什么我的数据绑定到一个计算函数不起作用(使用knockout.js和jade)
- 如何获取d3轴刻度以匹配我的数据
- ng-repeat / ng-bind 不会显示我的数据
- 为什么不能关闭我的数据表的排序
- D3.js复制我的数据
- 我的数据没有使用 AJAX 保存在数据库中
- 如何将输入映射到我的数据列表选项
- 警报截断了我的数据,我该如何查看它
- 如何在 Clojurescript 中 firebase.push ?我的数据是否正确
- 为什么我的数据绑定不起作用
- 为什么我的数据没有被添加到mojolicious的藏匿处
- 如何使用 Jquery 在段落中以纯文本形式显示我的数据,该段落以 JSON 文本包装
- 节点 js:Express + ssh2 在加载网页时不会重置我的数据结构
- 谷歌地图API v3:我在热图上显示我的数据时遇到问题
- AngularJS:如何判断我的控制器是否绑定到我的ng-repeat指令元素?我的数据没有显示