Reactjs 在React中使用redux状态时遇到困难
**更新 我已将减速器更新为:Reactjs 在React中使用redux状态时遇到困难,reactjs,redux,Reactjs,Redux,**更新 我已将减速器更新为: 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: "Spa
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)}
然后返回undefined。它不是应该具有在减速器中设置的初始值吗
**更新
我正在使用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,
});
在我的签名中,我有:
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
};
}
下面是监听该动作的减速器:
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
}
然后在你的州北部
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(状态)代码>当你执行onChange时,在你的reducer中是否会触发?是的,下面是回答:reducer-select_indy_biz.js:15[]长度:0_uuproto_uu:Array[0]@Leigh谢谢我自己试图回答这个问题。由于格式问题,我无法理解这个片段。我会尽量小心的谢谢!但是你是说我不应该在返回中导出signupState函数,而只是把initial state对象放在reducer中?我们在特定reducer文件中如何实现它,将initialState作为一个变量放在顶部,然后放在下面,该变量具有实际的减速器功能,即开关语句和相应的减速器。(state=initialState,action)
只是确保当您第一次启动所有功能时,它具有正确的初始工作状态。谢谢。我做了改变。由于某种原因,当我试图从该对象访问一个值并将其记录在控制台日志中时,我得到了未定义的值。特别尝试记录“console.log(this.props.selectindibus.indibiz)”我明白了!你是对的。我仍然有问题,因为当我把值放入减速机时,我对减速机使用的名称与我在动作中使用的名称相同……哇,我是个白痴。谢谢呵呵,没问题,就像我的导师经常告诉我的那样,如果什么东西不起作用,那可能就是什么愚蠢的东西