Javascript 为什么我在react中得到的第一个响应是空数组?
下面我尝试获取数据并在另一个名为Search的组件中使用onInputValue函数。第一次尝试后,它工作正常,但我在最初的按钮单击中得到一个空数组Javascript 为什么我在react中得到的第一个响应是空数组?,javascript,reactjs,Javascript,Reactjs,下面我尝试获取数据并在另一个名为Search的组件中使用onInputValue函数。第一次尝试后,它工作正常,但我在最初的按钮单击中得到一个空数组 const App = () => { const [results, setResults] = useState([]); const onInputValue = async (input) => { const { data } = await nasa.get('/sea
const App = () => {
const [results, setResults] = useState([]);
const onInputValue = async (input) => {
const { data } = await nasa.get('/search', {
params: {
q: input,
},
});
if(!results) {
return;
}
setResults(data.collection.items);
console.log(results);
};
return (
<div>
<Search onInputValue={onInputValue} />
</div>
);
};
常量应用=()=>{
const[results,setResults]=useState([]);
const onInputValue=async(输入)=>{
const{data}=wait nasa.get('/search',{
参数:{
问:输入,
},
});
如果(!结果){
返回;
}
setResults(数据收集项);
控制台日志(结果);
};
返回(
);
};
从“React”导入React,{useState};
常量搜索=({onInputValue})=>{
const[input,setInput]=useState(“”);
返回(
setInput(e.target.value)}
/>
{onInputValue(输入)}
className='btn btn大纲辅助'
type='button'
>
);
};
导出默认搜索;
下面是我得到的结果。
请告知这是由于
setResults
函数的异步性质造成的-调用后,results
的更新值将在下一次组件渲染时可用-在您的示例中,您在调用setResults
后立即登录到控制台,这可能是因为setResults
是批处理的,因此移动到下一行
请参阅useState
批量更新
也
if(!results){return;}
有点可疑<代码>![]==false和
!['someValue']==false
setResults是异步的如果要检查结果,可以使用useEffect
const App = () => {
const [results, setResults] = useState([]);
useEffect(() => {
console.log(results);
}, [results])
const onInputValue = async (input) => {
const {data} = await nasa.get('/search', {
params: {
q: input,
},
});
if (!results) {
return;
}
setResults(data.collection.items);
};
return (
<div>
<Search onInputValue={onInputValue} />
</div>
);
};
const-App=()=>{
const[results,setResults]=useState([]);
useffect(()=>{
控制台日志(结果);
}[结果])
const onInputValue=async(输入)=>{
const{data}=wait nasa.get('/search',{
参数:{
问:输入,
},
});
如果(!结果){
返回;
}
setResults(数据收集项);
};
返回(
);
};
const App = () => {
const [results, setResults] = useState([]);
useEffect(() => {
console.log(results);
}, [results])
const onInputValue = async (input) => {
const {data} = await nasa.get('/search', {
params: {
q: input,
},
});
if (!results) {
return;
}
setResults(data.collection.items);
};
return (
<div>
<Search onInputValue={onInputValue} />
</div>
);
};