【问题标题】:react reducer initialState didnt show as expexted反应减速器初始状态未按预期显示
【发布时间】:2019-01-17 20:48:41
【问题描述】:
var rootReducer = Redux.combineReducers({
    reducreForButtonGroup,reducreForButtonGroup2
});

我确实将 initialState 设置为如下所示的减少,但是当我加载页面时,详细信息按钮没有禁用。

var initialState2 = {
        disabled:false
        }

function reducereForButtonGroup2(state = initialState2, action) {

}

var DetailButton = React.createClass({ 
            clickDisable(event) {  
                this.props.dispatch(clickDisable());  
            }  ,

          render() {

            const { disable } = this.props;   

            return (
            <ButtonToolbar style={{width: 17+ 'em'}}>
            <Button  disabled={disable} style={{width: 5 + 'em'}}>Detail</Button>
            <Button onClick={this.clickDisable} style={{width: 5 + 'em'}}>Close</Button>
            </ButtonToolbar>)
          }
        }) ;


function select(state) {  
    return {  
        disabled: state.disabled
    }  
}  

const NewDetailButton = connect(select)(DetailButton);

新减速机


我要添加的新减速器

var initialState = {
        value:15
        }

动作创作者

function clickAdd() {
  return {
      type: 'CLICK_ADD'
  }
}

新的减少

 function reducreForButtonGroup(state = initialState, action) {
      if (typeof state === 'undefined') {
        return 0
      }
      var value;
      switch(action.type) {
          case 'CLICK_ADD': {
              console.log("2");

              return {
                  value: state.value + 1
                  }

          }
          default :{
              return state
          }
      }
    }

组件

var ButtonGroup = React.createClass({

     clickAdd(event) {  
            this.props.dispatch(clickAdd());  
        }  ,

  render() {

      const { value } = this.props;     

        return (
          <ButtonToolbar style={{width: 17+ 'em'}} >
          <Button  id="search"   style={{width: 5 + 'em'}}>{value}</Button>
          <Button  onClick={this.clickAdd} style={{width: 5 + 'em'}}>Create</Button>
          </ButtonToolbar> 
        );
      }
});

Mapstatetoprops 我确实在 mapStateToProps 中使用了简化名称

function select(state) {  
    return {  
        value: state.reducreForButtonGroup.value
    }  
}  

const NewButtonGroup = connect(select)(ButtonGroup);

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

    您有拼写问题,应该是 const { disabled } = this.props;disabled={disabled},我相信它应该可以工作。

    同时注销您从该州获得的信息,因为我认为它应该是:

    function select(state) {  
       console.log(state);
        return {  
            disabled: state.reducreForButtonGroup2.disabled
        }  
    } 
    

    还有人认为它被称为reducer 而不是reducre。你拼错了几次。

    【讨论】:

    • 感谢您的回复,但我更改拼写问题后仍然无法使用
    • 抱歉又打扰你了,Kevin Amiranoff,我试着用同样的方法在同一家商店下多加一个减速器,但它不起作用~_~你介意再帮我一次吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多