json - React Native Hook-如何将 json 数据放入状态挂钩
问题描述
我正在使用 React Native。我从“结果”中的 json 获得了我需要的过滤数据,但我想将此数据显示到反应状态钩子中,它显示一个空的 []。我希望用户编写城市和选择器以显示该城市的可能国家。
这是我的 JSON
```
data:[
{
"id": 1704127,
"name": "Madridejos",
"state": "",
"country": "PH",
"coord": {
"lon": 123.346199,
"lat": 9.79116
}
},
{
"id": 1704129,
"name": "Madrid",
"state": "",
"country": "PH",
"coord": {
"lon": 125.964371,
"lat": 9.26211
}
},
]
```
这是我的代码:
```
const [value, setValue] = useState('')
const [country, setCountry] = useState('')
const [state,setState]=useState()
var result
const handleChange=(event)=>{
setValue(event.target.value)
if (event.target.value && event.target.value.length > 0) {
conuntries(event.target.value)
} else {
setState({})
}
}
const conuntries=(city)=>{
const finalCity=
city.charAt(0).toUpperCase() + city.slice(1)
result=
data.filter(d => d.name===finalCity)
console.log('result', result)
setState(result)
console.log(state)
}
<View className="form-group">
<TextInput placeholder='City' onChange={handleChange}value={value}
name='city' type='text' className="form-control" />
</View>
<View className="form-group">`enter code here`
<Picker
selectedValue={country}
onValueChange={(itemValue, itemIndex) => setCountry(itemValue)}
>
{state&& state.map(a => (
<Picker.Item key={`search-a-${a.id}`}style={styles.picker}label={a.country} value={a.country} />))}
</Picker>
</View>
```
解决方案
您可以通过以下代码解决它:
const [country, setCountry] = useState('')
const handleChange=(event)=>{
if (event.target.value && event.target.value.length > 1) {
conuntries(event.target.value)
}
}
const conuntries=(city)=>{
const finalCity= city.charAt(0).toUpperCase() + city.slice(1).toLowerCase();
let result = data.filter(d => d.name===finalCity)
if(result.length !== 0){
setCountry(result)
console.log(country)
}
}
如果您只想获取一个国家/地区,请假设可以有多个来自不同国家/地区的同名城市,那么您可以使用
let result = data.filter(d => d.name===finalCity)[0]
或最后一个
let result = data.filter(d => d.name===finalCity)
result = result[result.length -1]
或者您可以将其他自定义功能与Country状态一起使用
推荐阅读
- asp.net-mvc - 应该存储哪些 JWT 令牌以供以后使用?
- powershell - PowerShell (Get-Content -Path "Config.txt" -TotalCount ($aVariable + 2)[-1]) 得到 2 行而不是 1 行
- node.js - 使用 Sequelize 获取 360 万条记录会导致 Node 崩溃,MariaDB 连接器可以正常工作。知道为什么吗?
- reactjs - Material-ui 自动完成清除值
- javascript - 状态更改后功能组件不会重新呈现 [反应]
- sql - 高效的 SQL 表合并和分页
- ssl - 生成自签名证书时配置文件“v3.ext”的第 1 行出错
- excel - Excel VBA 如何从打开的文件中捕获文件名
- kubernetes - Ingress 中的托管证书,域状态为 FailedNotVisible
- python - python:带有可选命令行参数的argparse