setState

时间:2019-12-20 19:28:00

标签: javascript reactjs redux

嗨,我想做setState然后运行功能。我收到此错误: 警告:useState()和useReducer()挂钩的状态更新不支持第二个回调参数。要在渲染后执行副作用,请使用useEffect()在组件主体中声明它。控制台。

我的代码:

import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { addPostOptions } from '../../actions/post';

const NewPostOptions = ({ addPostOptions, category: { selected } }) => {
    const [optionData, setOptionData] = useState({
        transaction_type: ''
    });



    const {
        transaction_type
    } = optionData;


    const onChange = e => {
        setOptionData({ ...optionData, [e.target.name]: e.target.value }, () => addPostOptions(optionData));
    }

    return selected.id === 1001 ? (
        <div class="form-group">
            <p>Hello</p>
        </div>
    ) :
        selected.id === 102 ? (
            <div class="form-group">
                <input
                    type="text"
                    placeholder="Title"
                    name="transaction_type"
                    value={transaction_type}
                    onChange={e => onChange(e)}
                />
                <small class="form-text">You should set a title</small>
            </div>
        ) :
            (
                <div></div>
            )
}

NewPostOptions.propTypes = {
    addPostOptions: PropTypes.func.isRequired
}

const mapStateToProps = state => ({
    category: state.category,
});

export default connect(mapStateToProps, { addPostOptions })(NewPostOptions)```

1 个答案:

答案 0 :(得分:0)

如错误所述。删除setOptionDate函数中的第二个参数。并使用useEffect。 在对optionData状态进行每次更改后,效果都会运行。

useEffect(() => {
   addPostsOptions(optionData);
}, [optionData, addPostsOptions]);