如何在react中将第一状态数据分配给第二状态



当我将数据从一种状态设置为另一种状态时。它说的是未定义。目前,我正在开发类似火绒的刷卡功能,点击鼠标右键和左键。

我正在将用户id从卡传递到按钮。如右滑动和左滑动按钮。

//场景优先如果已经声明对象的数组为静态,那么它的工作方式就像一个符咒,那么它不会说任何错误。

////场景二如果我使用API将数据动态设置为SetState,并将状态变量数组数据分配给另一个状态变量,它会显示undefined。

我试图在3天内解决这个问题,但没有成功,我是React js的新手。如有帮助,不胜感激。

这是我的代码


const AllData= [
{
id: 1,
name: 'XYZ'
},
{
id: 2,
name: 'ABC'
},
{
id: 3,
name: 'ABC 2'
},
{
id: 4,
name: 'ABC 3'
},
{
id: 5,
name: 'ABC 4'
}
]  //It works if set static array
const [AllData, setAllData] = useState([]); //it does not works
const GetAllUserData = async () =>{
const bodyParameters ={
session_id : SessionId
};
const {data : {data}} = await axios.post(GETALLUSER_API , bodyParameters);
setAllData(data); 
}
// Setting current user from all data 
const [currentUser, setCurrentUser] = useState(AllData[0])
console.log(currentUser); // undefined says 

这里,AllData将在GetAllUserData执行完成后添加到状态,它是异步函数,所以AllData在一段时间后将可用,您必须更新currentUser,您必须这样做。

useEffect(() => {
if (AllData.length) {
setCurrentUser(AllData[0]);
}
}, [AllData]);

它不起作用,因为您可能在调用setAllData初始化AllData之前就返回了。

作为一个api调用,返回数据需要一些时间。

对于这种情况,一个很好的解决方案是放置一个加载器,直到它获得数据,当您最终接收到数据时,只在屏幕上呈现内容。

相关内容

  • 没有找到相关文章

最新更新