我只需要从我的平面列表的数组中获取一个值,因为我正在构建一个更新屏幕,所以我需要获取一个用户的json,而不是数组中的所有对象,我尝试使用一个函数获取它,它可以工作,但在第二次尝试时,它返回null,这对我来说没有任何意义
export default function Pesquisa({navigation}){
const renderItem=({item}) =>{
return (
<View style={css.containerList}>
<Text> {item.no_completo}</Text>
<Text> {formataCPF(String(item.nu_cpf))}</Text>
<Text> {item.ds_email}</Text>
<Text> {formataNumero(item.nu_telefone_completo)}</Text>
<TouchableOpacity style={css.button_editar} onPress={()=> navigateEdit(item.no_completo)} >
<Text style={css.text_buttom_editar}> EDITAR</Text>
</TouchableOpacity>
</View>
)
}
const [nu_cpf, setNu_cpf]=useState(null);
const [no_completo, setNo_completo]=useState(null);
const [data, setData] = useState([])
const [dados, setDados] = useState(null)
function navigateEdit(selectedItem){
setDados(data.filter(data=> data.no_completo === selectedItem))
console.log('resutado', dados)
}
return(
<View style={css.containerMenu}>
<MenuAreaRestrita title='Pesquisa' navigation={navigation}/>
<View>
<Text style={css.textCadastro}> Preencha um dos campos:</Text>
</View>
<TextInput style={css.textInputCadastro} placeholder="Nome completo" onChangeText={text=> setNo_completo(text) }/>
<TextInputMask style={css.textInputCadastro} type={'cpf'} placeholder="CPF do usuário" onChangeText={text=> setNu_cpf(text) } value={nu_cpf} />
<TouchableOpacity style={css.button_login} onPress={()=> sendForm()} >
<Text style={{fontWeight: 'bold', marginTop:6, alignSelf:'center', fontSize:15, color: '#fff'}}>PESQUISAR PACIENTE</Text>
</TouchableOpacity>
<FlatList renderItem={renderItem} data={data} keyExtractor={(item)=> String(item.id)} />
</View>
)
}
发布于 2021-08-24 10:26:20
您自己将状态设置为null
const [no_completo, setNo_completo]=useState(null);
因此,将null传递给navigateEdit方法会导致null
您的函数navigateEdit接受一个项。
<TouchableOpacity style={css.button_editar} onPress={()=> navigateEdit(item.no_completo)} >
您正在执行函数onPress() (这意味着当您单击元素时将执行函数)
当你点击这个函数时,它就会被执行,里面有一个空值作为参数。因此你的
setDados(data.filter(data=> data.no_completo === selectedItem))
内部也有null值,这会导致第一次单击时为null
解决方案是最初不将no_complete设置为null,您也不必将dados设置为null
const [no_completo, setNo_completo]=useState();
const [dados, setDados] = useState();
https://stackoverflow.com/questions/68912192
复制相似问题