Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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 访问React组件功能中的新REDUX状态_Javascript_Reactjs_React Redux_State - Fatal编程技术网

Javascript 访问React组件功能中的新REDUX状态

Javascript 访问React组件功能中的新REDUX状态,javascript,reactjs,react-redux,state,Javascript,Reactjs,React Redux,State,我使用的是React和React Redux工具包,很难从函数中访问更新的状态 我有一个自定义的React组件,我将其传递给我的状态变量: const{useffect,useState}=React; 常量外部组件=({func})=>{ func(); 返回( ); }; 常量组件=({state})=>{ 日志(“组件”,状态); 常量someFunction=()=>{ console.log(“state”,state); }; 返回( ); }; 常量页=()=>{ const[s

我使用的是React和React Redux工具包,很难从函数中访问更新的状态

我有一个自定义的React组件,我将其传递给我的状态变量:

const{useffect,useState}=React;
常量外部组件=({func})=>{
func();
返回(
);
};
常量组件=({state})=>{
日志(“组件”,状态);
常量someFunction=()=>{
console.log(“state”,state);
};
返回(
);
};
常量页=()=>{
const[state,setState]=useState();
useffect(()=>{
设置状态(真);
}, []);
返回(
);
};
ReactDOM.render(
,
document.getElementById('root'))
);

发生这种情况是因为您有一个过时的值。尝试使用
useCallback

import { useCallback } from 'react';

const Component = ({ statefulVariable }) => {
  console.log("Component", statefulVariable);

  const someFunction = useCallback(() => {
    console.log(statefulVariable);
  }), [statefulVariable]);

  return (
    <SomeThirdPartyComponent callback={someFunction}/>
  );
};
从'react'导入{useCallback};
常量组件=({statefulVariable})=>{
log(“组件”,statefulVariable);
const someFunction=useCallback(()=>{
console.log(statefulVariable);
}),[statefulVariable]);
返回(
);
};

基于上述代码,它应该可以很好地打印。您是否在
useCallback
中包装函数?如果没有,您能否分享如何从
SomeThirdPartyComponent
调用
someFunction
请提供一个可复制的示例@DennisVash我创建了一个可复制的示例,但是我无法复制该问题,因为我使用PayPalButtons似乎是特定组件的问题,没有复制,我们只能guess@Easwar谢谢你的提示。事实确实如此。解决方案发布在下面谢谢,我尝试使用useCallback没有任何效果。我编辑了我的代码片段,并提到我正在使用PaypalButtons。我怀疑问题出在那里