Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 将正常功能连接到Redux';s mapDispatchToProps_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 将正常功能连接到Redux';s mapDispatchToProps

Javascript 将正常功能连接到Redux';s mapDispatchToProps,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我正在研究Redux,虽然我了解它是如何工作的,但我不能完全确定我是否正确使用了它 关于如何将功能组件连接到我的操作,本文给出了大量示例。但是有没有办法直接从函数中调用我的操作 有可能让这样的东西起作用吗 function mapDispatchToProps(dispatch) { return { saveUserData: user => dispatch(saveUserData(user)) }; } function ConnectedUserInfo(){

我正在研究Redux,虽然我了解它是如何工作的,但我不能完全确定我是否正确使用了它

关于如何将功能组件连接到我的操作,本文给出了大量示例。但是有没有办法直接从函数中调用我的操作

有可能让这样的东西起作用吗

function mapDispatchToProps(dispatch) {
  return {
    saveUserData: user => dispatch(saveUserData(user))
  };
}

function ConnectedUserInfo(){
  console.log("fetching user info")
  fetch('endpoint', 'headers',
  }).then(response =>
    response.then(user => {
      this.props.saveUserData(user)
    })
  )
}

const getUserInfo = connect(
  null,
  mapDispatchToProps
)(ConnectedgetUserInfo);
export default getUserInfo;
我尝试直接使用
saveUserData(user)
设置我的redux状态,但无法更改存储。 将两者联系起来似乎没有任何作用,除非我做错了什么


我不确定这是否是我正在寻找的解决方案,或者Redux是否希望我每次更改状态时都映射DispatchToprops。

我建议使用react Redux中的useDispatch和useSelector来代替mapdispatch或mapstate以用于功能组件

import {useSelector,useDispatch} from 'react-redux;

const dispatch=useDispatch();
const stateSelector=useSelector(state=>({
    your states
}));

如果阅读react-redux文档,您可以看到connect方法返回一个只接受react组件的HOC。 在代码中,ConnectedgetUserInfo不是react组件

react redux文档:

反应组分定义:


您还必须使用起始字符大写来命名react组件。

这段代码中出现了什么错误?如果我没有记错,您就不会在函数中使用
this.props
。ConnectedUserInfo将有一个props参数(
function ConnectedUserInfo(props)
),您将使用
props.saveUserData(user)
。@Sohail没有错误,函数就是不正确executed@wizloc我现在就试试看我明白文件了,我只是觉得这看起来很奇怪,我只能从一个组件更新存储。这是否意味着我必须从外部函数返回我的用户信息,然后将其映射到React组件中的存储?我只是觉得我只能从组件更新存储似乎很奇怪。--这并不奇怪。react redux是为涵盖大多数常见用例而构建的。此外,函数ConnectedUserInfo没有任何作为参数的道具。如果您想要分派一个事件,您可以将提取代码移动到Component的useEffect中,然后在收到结果后再进行dipsatch。如果您发现此模式在许多组件中重复出现,您可以使用redux thunk:my user info from external function,然后将其映射到React组件中存储---如果您只想将获取的数据存储在单个组件中,请不要将其存储或使用redux,因为您无法使其全局可用。取而代之的是使用一个状态钩子并更新useffect函数中获取数据的状态。