javascript - 警告 : setState(. ..):在 React Redux 中现有状态转换期间无法更新

标签 javascript reactjs react-redux

当我点击按钮时,我总是收到警告。我搜索它,他们使用绑定(bind)来删除警告,但是我如何添加它以在我的代码中对绑定(bind)函数使用react?

import * as React from 'react';
import {connect} from 'react-redux';
import {toggleModal} from '../../actions/ModalActions';

interface Props {
    show?: boolean;
    onSelectedSample: (value: boolean) => void;
}

const SampleList = ({show, onSelectedSample}: Props) => {

  return (
     <div>
        <a  className='button link info' onClick={() => onSelectedSample(!show)}><i className='fa fa-user-plus fa-fw'></i></a>
        <a  className='button link info' onClick={() => onSelectedSample(!show)}><i className='fa fa-user-plus fa-fw'></i></a>
        <a  className='button link info' onClick={() => onSelectedSample(!show)}><i className='fa fa-user-plus fa-fw'></i></a>
      </div>
    );
});


const mapStateToProps = (state, props) => {
    return {
        show: state.modalReducer.show,
    };
};

const mapDispatchToProps = (dispatch, props) => {
    return {
        onSelectedSample: (toggle: boolean){
            dispatch(toggleModal(toggle));
        },
    };
};

const ListSampleContainer = connect(mapStateToProps, mapDispatchToProps)(SampleList);
export default ListSampleContainer;

在 redux 代码中很难。我不知道如何在 redux 中处理这个问题。

更新

Action 文件夹

import {ModalActions} from '../constants/ModalConstants';

export const toggleModal = (show?: boolean) => {
    return {
        type: ModalActions.TOGGLE_MODAL,
        show,
    };
};

Reducer文件夹

import {ModalActions} from '../constants/ModalConstants';

interface State {
    show: boolean;
}

const initState = {show: false};

export const modalReducer = (state: State = initState, action) => {
    switch (action.type) {
        case ModalActions.TOGGLE_MODAL:
            if (action.show) {
                return {show: action.show};
            } else {
                return {show: !state.show};
            }

        case ModalActions.HIDE_MODAL:
            return {show: false};
    }
    return state;
};

如果我只有一个按钮。我没有警告,但如果添加更多按钮。这将会发生

最佳答案

也许当您单击一个 anchor 时,其他 anchor 也会以某种方式被单击,因为它们是交错的。为了消除这种可能性,请尝试对不同的 anchor 使用不同的 onClick 处理程序,然后查看是否仍然存在错误。例如,让它们中的每一个都将不同的输出记录到控制台,而不是分派(dispatch)您的操作。然后我们就可以确定了。

<a  className='button link info' onClick={() => onSelectedSample1(!show)}><i className='fa fa-user-plus fa-fw'></i></a>
<a  className='button link info' onClick={() => onSelectedSample2(!show)}><i className='fa fa-user-plus fa-fw'></i></a>
<a  className='button link info' onClick={() => onSelectedSample3(!show)}><i className='fa fa-user-plus fa-fw'></i></a>

关于javascript - 警告 : setState(. ..):在 React Redux 中现有状态转换期间无法更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600384/

相关文章:

javascript - 使用 React Router 4 和 Redux 时,React View 不会渲染

javascript - Angular 2 路由异步解析不会保留导航位置

javascript - 带有帧控制的 Canvas 上的 GIF 动画

javascript - MUI v5 - 在 TypeScript 中扩展 Typography 变体会产生错误 "No overload matches this call"

javascript - Redux 中的容器组件太多(n 个数字,其中 n 未知),担心性能?

javascript - 当提供渲染函数时,React 不会重新渲染 props

javascript - 成本分配器 JavaScript 应用程序

javascript - 无法匹配任何路线。带参数的 Angular2 URL

reactjs - React 有类似 Vue 的 keep-alive 元素吗?

javascript - 如何在 React 中访问 DOM 元素? React 中 document.getElementById() 的等价物是什么