react-native - 如何从渲染器访问在“useEffect”挂钩中计算的值
问题描述
我正在开发一个带有功能组件的 React-Native 项目。
这是一个非常简单的屏幕,它呈现计算结果列表。因为我只需要计算一次,所以我把它放在useEffect
钩子里。
import {doCalculation} from '../util/helper'
const MyScreen = ({navigation}) => {
useEffect(() => {
// I call a function from a helper module here.
// The result is a list of object.
const result = doCalculation();
// eslint-disable-next-line
}, []);
// renderer
return (
<View>
// Problem is 'result' is not accessible here, but I need to render it here
{result.map(item=> <Text key={item.id}> {item.value} </Text>)}
</View>
)
}
export default MyScreen;
正如你所看到的,我已经调用了doCalculation()
获取result
内部useEffect
钩子。我的问题是如何在return
零件中呈现结果?由于result
是在钩子内部计算的,因此无法在渲染器中访问它。
PS 将钩子移到const result = doCalculation()
外部useEffect
不是一种选择,因为我只需要调用一次计算。
解决方案
利用useState
保存计算结果,然后使用里面的变量return
。请参阅https://reactjs.org/docs/hooks-state.html。
推荐阅读
- post - 使用 rest-assured 对 post Rest WS 进行 JUnit 测试
- mqtt - 如何通过端口转发从 Web 订阅 mosquitto broker raspberry pi b3+ 主题
- django - nameerror 模型帖子未定义
- android - DialogFragment 中的 Recyclerview
- javascript - 为什么在每种情况下我都应该从 .then() 返回?
- java - Keycloak 适配器集成测试失败错误必须在配置中设置“领域”
- ffmpeg - DirectX 与 FFmpeg
- php - 如何替换整个mysql数据库php中的字符串
- javascript - 为什么我的按钮没有收到他们的 js 循环创建的 onclick 命令?
- c++ - 如何在 Qt5 中使用 Windows 环境变量