我面临一个奇怪的问题。我正在使用redux和react。当useState从商店获取新道具时,react useState再次初始化我的数据。文档说useState初始值仅在第一次渲染时出现,但我不明白为什么会发生这种情况
function UploadFileInfo({
createdCategory
}){
const [data, setData] = useState({
video_id: null,
title: 'title',
category_id: '2',
channel_category_id: '',
info: '',
tags: [],
playlists: '',
enable_comments: 0,
enable_watermark: false,
banner_id: null,
});
return (
<Paper square className={classes.paper}>
</Paper>
);
const mapStateToProps = createStructuredSelector({
tags: makeSelectTags(),
categories: makeSelectCategories(),
createdTag: makeSelectCreateTag(),
createdCategory: makeSelectCreateCategory(),
createdPlaylist: makeSelectCreatedPlaylist(),
myCategories: makeSelectMyCategories(),
myPlaylists: makeSelectMyPlaylists(),
uploadedFile: makeSelectUploadFile(),
});
function mapDispatchToProps(dispatch) {
return {
dispatch,
addTag: title => dispatch(createTag(title)),
addCategory: title => dispatch(createCategory(title)),
addPlaylist: title => dispatch(createPlaylist(title)),
publishVideo: data => dispatch(createVideo(data)),
};
}
const withConnect = connect(
mapStateToProps,
mapDispatchToProps,
);
export default compose(withConnect)(UploadFileInfo);
}
答案 0 :(得分:0)
您可以使用useEffect
。 componentDidMount
,componentDidUpdate
反应生命周期是相似的。如果某些值发生更改,您可以告诉反应以重新呈现页面。您可以在useEffect
函数的[]中定义这些值
useEffect(()=>{
setData({
//set data in here
})
},[addTag,addCategory, //values that get changed])