再次反应useState初始化值

时间:2020-10-26 16:40:26

标签: reactjs redux react-hooks

我面临一个奇怪的问题。我正在使用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);
}

1 个答案:

答案 0 :(得分:0)

您可以使用useEffectcomponentDidMountcomponentDidUpdate反应生命周期是相似的。如果某些值发生更改,您可以告诉反应以重新呈现页面。您可以在useEffect函数的[]中定义这些值

useEffect(()=>{
    setData({
       //set data in here 
    })
  
  },[addTag,addCategory, //values that get changed])