**更新
我已将减速器更新为:
const initialState = {
step: 1,
indibiz: "individual",
firstName:"first",
lastName: "last",
email: "email",
choice: "null",
emailNews: "no",
dob: "1",
mobileNumber: "1234567890",
island: "St. Lucia",
industry: "Astronaut",
Skill: "Space Monkey",
createClick: false
}
export default function (state = initialState, action) {
switch (action.type) {
case "SELECT_BUSINESS":
console.log(state);
return { ...state, indibiz: action.payloadEvent }
break;
}
return state;
}
现在,我在console.log中看到以下内容,它正在从initialstate记录对象。但是,如果我尝试在同一组件中记录以下内容:{console.log(this.props.selectindibusi.indibiz)}然后,它将返回未定义的内容。它不是应该具有在reducer中设置的initialValue吗?
**更新结束
我正在使用react,并且目前正在尝试学习使用Redux并将其用于我正在做的项目中。问题是我觉得我不完全了解减速器。以下是我的减速器索引:
import {combineReducers} from 'redux';
import signupState from './reducer-signup.js';
import TestReducer from './testalertreducer.js';
import Selectindibusi from './reducer-select_indy_biz.js';
const allReducers = combineReducers({
signupState: signupState,
selectindibusi: Selectindibusi,
});
在我的signupState reducer中,我有:
export default function () {
return ({
step: 1,
indibiz: "individual",
firstName:"first",
lastName: "last",
email: "email",
choice: "null",
emailNews: "no",
dob: "1",
mobileNumber: "1234567890",
island: "St. Lucia",
industry: "Astronaut",
Skill: "Space Monkey",
createClick: false
});
}
以下是操作:
export function selectindibusi(signupState, event) {
const SELECT_BUSINESS = "random string";
console.log(signupState);
return {
type: "SELECT_BUSINESS",
payloadState: signupState,
payloadEvent: event.target.value
};
}
下面是正在监听该动作的reducer:
export default function (state = [], action) {
switch (action.type) {
case "SELECT_BUSINESS":
console.log(state);
return { ...state, indibiz: action.payloadEvent }
break;
}
return state;
}
我在一个类似以下内容的下拉菜单中的onChange动作中对此动作进行校准:
<select className="formSelector100" onChange={this.props.selectindibusi.bind(this,this.props.signupState)}>
<option value="individual">Individual</option>
<option value="business">Business</option>
</select></label>
在操作中,我可以控制台记录正在传递的数据。问题在于它不是在signupState reducer中更新数据,也不是创建我可以访问的新对象。
在我的组件上,如果我尝试显示{this.props.signupState.indibiz},该值与reducer中的默认值相同,则不会更新。我觉得我在这里缺少一些基本的东西,我将不胜感激。
根据您的响应,如果控制台状态日志返回一个空数组,则:
export default function () {
return ({
step: 1,
indibiz: "individual",
firstName:"first",
lastName: "last",
email: "email",
choice: "null",
emailNews: "no",
dob: "1",
mobileNumber: "1234567890",
island: "St. Lucia",
industry: "Astronaut",
Skill: "Space Monkey",
createClick: false
});
}
没有被设置为状态。你应该怎么做是
const initialState = {
step: 1,
indibiz: "individual",
firstName:"first",
lastName: "last",
email: "email",
choice: "null",
emailNews: "no",
dob: "1",
mobileNumber: "1234567890",
island: "St. Lucia",
industry: "Astronaut",
Skill: "Space Monkey",
createClick: false
}
然后在您的signupState reducer中
export default function (state = initialState, action) {
switch (action.type) {
case "SELECT_BUSINESS":
console.log(state);
return { ...state, indibiz: action.payloadEvent }
break;
}
return state;
}
截至目前,您如何设置减速器没有收到正确的初始状态,因此为什么它认为状态为空数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句