Javascript 将正常功能连接到Redux';s mapDispatchToProps
我正在研究Redux,虽然我了解它是如何工作的,但我不能完全确定我是否正确使用了它 关于如何将功能组件连接到我的操作,本文给出了大量示例。但是有没有办法直接从函数中调用我的操作 有可能让这样的东西起作用吗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(){
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函数中获取数据的状态。