Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS-从redux获取数据并加载表单的正确方法_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript ReactJS-从redux获取数据并加载表单的正确方法

Javascript ReactJS-从redux获取数据并加载表单的正确方法,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我有减速机: const INITIAL_STATE = { campaign_dates: { dt_start: '', dt_end: '', }, 我正在提交我的表单,他们会发送一个操作以将数据保存到redux中: function onSubmit(data) { dispatch(addCampaignDatesAction(data)) } 到目前为止还不错,我可以保存数据,但如何将其加载到表单中 在我的表单所在的组件中,我尝试了以下方法

我有减速机:

const INITIAL_STATE = {
  campaign_dates: {
    dt_start: '',
    dt_end: '',
  },
我正在提交我的表单,他们会发送一个操作以将数据保存到redux中:

  function onSubmit(data) {
    dispatch(addCampaignDatesAction(data))
  }
到目前为止还不错,我可以保存数据,但如何将其加载到表单中

在我的表单所在的组件中,我尝试了以下方法:

const getCampaignDatesFromState = useSelector(
    state => state.createCampaign.campaign_dates,
  )

const [startDate, setStartDate] = useState(getCampaignDatesFromState.dt_start !== '' ? new Date(getCampaignDatesFromState.dt_start) : '')

const [endDate, setEndDate] = useState(getCampaignDatesFromState !== '' ? new Date(getCampaignDatesFromState.dt_end) : '')

但我得到了“格式时的时间值无效”错误(我的开始和结束日期输入来自react datepicker)


将redux数据加载到表单中的正确方法是什么?

您需要使用
react redux
库中的
connect()
方法。这也包含一些钩子,但是最好避免它们,因为它们会产生一些奇怪的问题,并且会失去
connect
的所有性能优势

İ如果你想打电话给dispatch并更新你的店铺,你应该在表单上添加这行内容

首先添加bindActionCreators和connect

import { connect } from "react-redux";

import { bindActionCreators } from "redux";
然后对MapStateTops、mapDispatchToProps使用连接方法

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(YourComponent);
现在您应该像这样定义mapStateToProps、mapDispatchToProps

const mapStateToProps = state => ({
  getCmpDates: state.campaign_dates
});

const mapDispatchToProps = dispatch => ({
  setCmpDates: bindActionCreators(campaign_dates, dispatch),
});

现在,您可以使用setCmpDates更改存储,也可以使用getCmpDates读取日期。

是否检查了MapStateTrops?我正在使用react挂钩,尝试使用useEffect,但出现了相同的错误up@ShoebMirza他正在使用新的样式UseSelector。这个问题看起来与时间格式有关,但与react redux无关。console.log(getActivationDatesFromState)并检查其格式。我得到了它,我正在传递一个对象,当时我只是用
const startCampaignDate=useSelector(state=>state.createCampaign.campaign\u dates.dt\u start,)将它们分开(state=>state.createCampaign\u dates.dt\u start,)
它现在正在工作。谢谢@SuleymanSah@fjurr您不需要使用connect。新的hooks样式react redux没有什么问题。