Reactjs Redux Thunk无法以静默方式更新状态

Reactjs Redux Thunk无法以静默方式更新状态,reactjs,redux,redux-thunk,Reactjs,Redux,Redux Thunk,子组件具有以下按钮代码: // SelectDonation.js <button onClick={(e) => { e.preventDefault(); this.props.testThunk(); console.log(store.getState()); }} >Test thunks</

子组件具有以下按钮代码:

// SelectDonation.js
          <button
            onClick={(e) => {
              e.preventDefault();
              this.props.testThunk();
              console.log(store.getState());
            }}
          >Test thunks</button>
我希望一个新的状态属性
redux\u thunk\u test\u var
在状态中显示,但它不会单击。不过,我确实在控制台中看到了带有初始状态的状态变量

我传得不对吗?这里是App.js

// App.js
          {this.props.checkoutStep === checkoutSteps.selectDonation &&
           <SelectDonation
            dispatch_set_donation_amount = {this.props.dispatch_set_donation_amount}
            dispatchChangeCheckoutStep={this.props.dispatchChangeCheckoutStep}
             {...this.props}
           />
          }         
          </Modal>
        </header>
      </div>
    );
  }
}

const map_state_to_props = (state) => {
  return {
    log_prop : state.log_to_console,
    donation_amount : state.donation_amount,
    checkoutStep : state.checkoutStep,
  }
};

const map_dispatch_to_props = (dispatch, own_props) => {
  return {
    dispatch_set_donation_amount : amount => dispatch(set_donation_amount(amount)),
    dispatchChangeCheckoutStep : newStep => dispatch(changeCheckoutStep(newStep)),
    dispatchUpdateStateData : (stateData, stateVariable) => (dispatch(updateStateData(stateData, stateVariable))),
    testThunk
  }
};
您需要分派
testThunk()
操作创建者的结果。现在,您只是返回它,而不是调用
dispatch(testThunk())

请参阅以帮助更好地理解问题

解决此问题的最佳方法是使用。作为其中的一部分,我建议更改道具名称以删除单词“dispatch”,这允许您使用更简单的ES6对象文字语法:

const map_dispatch_to_props = {
    set_donation_amount,
    changeCheckoutStep,
    updateStateData,
    testThunk,
};
您需要分派
testThunk()
操作创建者的结果。现在,您只是返回它,而不是调用
dispatch(testThunk())

请参阅以帮助更好地理解问题

解决此问题的最佳方法是使用。作为其中的一部分,我建议更改道具名称以删除单词“dispatch”,这允许您使用更简单的ES6对象文字语法:

const map_dispatch_to_props = {
    set_donation_amount,
    changeCheckoutStep,
    updateStateData,
    testThunk,
};
const map_dispatch_to_props = {
    set_donation_amount,
    changeCheckoutStep,
    updateStateData,
    testThunk,
};
conponentDidMount() {
  this.props.testThunk();
}

const map_dispatch_props = {
  testThunk
}


//action creator 

const fetch = (data) => ({
  type: 'thunkTest',
  payload: data
})


const fakeFetch = () => new Promise((resolve, reject) => setTimeout(() => resolve('Set Timeout done'), 2000));

export const testThunk = () => (dispatch) => fakeFetch.then(data => dispatch(fetch(data)))