【问题标题】:react useState initialize value again再次反应 useState 初始化值
【发布时间】:2021-02-08 23:02:14
【问题描述】:

我面临一个奇怪的问题。我正在使用 redux 和 react 。当从 store 获取新道具时,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);
}

【问题讨论】:

    标签: reactjs redux react-hooks


    【解决方案1】:

    您可以使用useEffect。这类似于componentDidMountcomponentDidUpdate 反应生命周期。如果某些值发生变化,您可以告诉 react 重新渲染页面。您可以在 useEffect 函数的 [] 中定义这些值

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多