javascript - 设置后如何获取状态值?
问题描述
在下面的代码中,我试图设置一个反应状态国家,我需要在设置后立即使用它。现在我只得到国家变量中以前的状态值。有什么方法可以在设置后立即获得国家价值?像回调或承诺?
import React,{useState,useEffect} from 'react';
import Axios from 'axios';
const url = 'https://restcountries.eu/rest/v2/name/'
let renderData= <div id="result"><h4>no Data </h4></div>
const Search = () =>
{
const [country,setCountry]=useState('');
const setCountryState = () =>
{
setCountry(event.target.value);
somefunction(country); //I am calling Some Other function Here by passing country as variable
}
return (
<div>
<form>
<input type="text" value={country} onChange={setCountryState} placeholder="Country Name"/>
</form>
<div>
{country}
</div>
</div>
);
}
export default Search;
解决方案
setState async 所以它不会立即更新。
相反,使用 useEffect 并将国家添加为依赖项。每次国家/地区更改时,useEffect 函数都会运行
import React,{useState,useEffect} from 'react';
import Axios from 'axios';
const url = 'https://restcountries.eu/rest/v2/name/'
let renderData= <div id="result"><h4>no Data </h4></div>
const Search = () =>
{
const [country,setCountry]=useState('');
useEffect(()=>{
somefunction(country)
},[country])
const setCountryState = (event) =>
{
setCountry(event.target.value);
}
return (
<div>
<form>
<input type="text" value={country} onChange={setCountryState} placeholder="Country Name"/>
</form>
<div>
{country}
</div>
</div>
);
}
export default Search;
推荐阅读
- facebook-graph-api - 检查用户是否存在于 Facebook
- docker - .dockerignore 不用于 docker-compose 构建?
- concurrency - Spring data JPA - 实体的并发访问
- php - 带有连接表的 Doctrine 查询生成器 ManyToMany
- scala - 在scala中使用嵌套foreach进行迭代是否有效?
- android - 更新到新的 Android Studio 3.1.2
- recursion - Scheme中的中间递归函数值
- java - 如果 DatePicker 在 AlertDialog 内,则不会在 EditText 单击上显示
- c# - 为什么实例构造函数首先运行?
- r - R - 将 excel 读入源结构中的数据框并获取读取的行数