我在尝试访问数组中对象的某些值时遇到问题,该值作为来自 Axios Get 方法的响应接收。
我想分别访问数组每个对象的 id、dateTime、sensorData 等值,如 result[0].id(dateTime、sensorData 等(。
我的部分代码:
const ShowSensorsScreen = ({ navigation }) => {
const [ result, setResult ] = useState([]);
const id = navigation.getParam('id');
useEffect(() => {
getResult(id);
}, []);
const getResult = async id => {
const response = await searchApi.get(`/sensorData/${id}`);
setResult(response.data);
};
console.log(result[0]);
return (
<ImageBackground source={backgroundImage} style={styles.ImageBackground}>
<Bar>
<Text style={styles.textStyle}>
{result[0].dateTime}
</Text>
</Bar>
<SensorsDetail evaluation={result} />
</ImageBackground>
);
};
使用控制台.log(结果(甚至控制台.log(结果[索引](一切运行正常,但尝试使用result[0].id得到一个错误,指出未定义不是一个对象...
来自控制台.log的示例(结果(:
Array []
Array [
Object {
"sensorData01": "100.00000",
"sensorData02": "101.00000",
"sensorData03": "102.00000",
"sensorData04": "103.00000",
"dateTime": "2020-01-06T23:10:56Z",
"id": 1,
"idEvaluation": 1,
},
Object {
"sensorData01": "110.00000",
"sensorData02": "111.00000",
"sensorData03": "112.00000",
"sensorData04": "113.00000",
"dateTime": "2020-01-06T23:11:16Z",
"id": 2,
"idEvaluation": 1,
},
]
从控制台.log(结果[0](:
undefined
Object {
"dadosSensor01": "100.00000",
"dadosSensor02": "101.00000",
"dadosSensor03": "102.00000",
"dadosSensor04": "103.00000",
"dataHora": "2020-01-06T23:10:56Z",
"id": 1,
"idAvaliacao": 1,
}
我会感谢我能得到的任何帮助!
问题是setResult
(钩子(是异步的,并且在设置状态之前result.data
打印。在结果中设置正确的数据后,请尝试以下操作进行打印。
React.useEffect(() => {
console.log(result[0]);
}, [result]);
const searchApi = async (searchAppointment) => {
console.log('Searching appointment...');
setIsLoading(true);
try {
const response = await baseURL.get(
`/sensorsData/${searchAppointment}`);
console.log(response.data[0]);
setResult(response.data);
console.log(result[0])
} catch (err) {
console.log(err);
setErrorMessage('Something went wrong, please try again later...');
}
setIsLoading(false);
};
请参考此内容以获取使用状态回调 - 使用状态回调
所以我得到了另一篇文章的帮助,事实证明,要做我需要的事情,我必须使用.map((,它是这样的:
const sensor01 = avaliacao.map((item) => item.dadosSensor01);
const sensor02 = avaliacao.map((item) => item.dadosSensor02);
const sensor03 = avaliacao.map((item) => item.dadosSensor03);
const sensor04 = avaliacao.map((item) => item.dadosSensor04);
如果有人有更好的其他方式,我很想听听,现在,我感谢大家的惊人支持!