嗨,我想做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)```
答案 0 :(得分:0)
如错误所述。删除setOptionDate函数中的第二个参数。并使用useEffect。 在对optionData状态进行每次更改后,效果都会运行。
useEffect(() => {
addPostsOptions(optionData);
}, [optionData, addPostsOptions]);