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)”我明白了!你是对的。我仍然有问题,因为当我把值放入减速机时,我对减速机使用的名称与我在动作中使用的名称相同……哇,我是个白痴。谢谢呵呵,没问题,就像我的导师经常告诉我的那样,如果什么东西不起作用,那可能就是什么愚蠢的东西