Javascript 为什么我在react中得到的第一个响应是空数组?

Javascript 为什么我在react中得到的第一个响应是空数组?,javascript,reactjs,Javascript,Reactjs,下面我尝试获取数据并在另一个名为Search的组件中使用onInputValue函数。第一次尝试后,它工作正常,但我在最初的按钮单击中得到一个空数组 const App = () => { const [results, setResults] = useState([]); const onInputValue = async (input) => { const { data } = await nasa.get('/sea

下面我尝试获取数据并在另一个名为Search的组件中使用onInputValue函数。第一次尝试后,它工作正常,但我在最初的按钮单击中得到一个空数组


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>
  );
};