我正在使用无经验的react native,当尝试使用UseState设置值时,它不会立即设置,并且我无法在另一个函数中获取值。
const [gridData, setGridData] = useState([]);
useEffect(() => {
getGridApi().then((response)=>{
setGridData(response);
pressed('Mon', 0);
})
}, []);
const pressed = async (category, index) => {
console.log(gridData); // empty
}
如何让它等待设置,然后调用函数Pressed()
答案 0 :(得分:1)
您可以使用this package,也可以为此使用自己的自定义钩子。不幸的是,没有提供useState和Callback功能
示例:
从'use-state-with-callback'导入useStateWithCallback;
const App = () => {
const [count, setCount] = useStateWithCallback(0, count => {
if (count > 1) {
console.log('Threshold of over 1 reached.');
} else {
console.log('No threshold reached.');
}
});
return (
<div>
<p>{count}</p>
<button type="button" onClick={() => setCount(count + 1)}>
Increase
</button>
</div>
);
};
答案 1 :(得分:1)
不幸的是,Cioa带有钩子,设置状态是异步的,您无法以这种方式获取最后一个值。但是您可以使用另一个useEffect
钩子来检索状态变量的任何更改。
尝试一下:
useEffect(() => {
console.log(gridData); // this shows the last value of gridData setted by the other useEffect
}, [gridData]);
但是请注意:每次useEffect
更改他的值时,我会为此gridData
触发!