javascript - 在加载之前尝试对未定义变量执行方法的反应?
问题描述
正如你从我的标题中可以看出的那样,我什至不知道该怎么称呼这个问题。
我在代码沙箱中创建了一个示例 https://codesandbox.io/s/interesting-poitras-5bcuv?file=/src/Demo.js
如果它是等待设置值的问题,我读过我需要实现某种加载状态?我在这里尝试过:
https://codesandbox.io/s/blissful-antonelli-tu624?file=/src/Demo.js
但似乎无法让它发挥作用,我什至不知道我是否走在正确的轨道上。
我已经使用 react 几个月了,我不完全理解的一件事是:
似乎代码运行了多次,第一次它将 {} 的默认状态作为值传递给我的演示组件,将设置状态并将实际值传入。
由于拆分,我的应用程序在实际值传入之前崩溃了。
过去,我只是在下面的问题上抛出一堆 if 和 && 语句,但这是最好的方法吗?
const split = props.values.home && props.values.home.split("-")
解决方案
你需要在那里进行安全检查。你的问题是一个普通的js问题,你不能访问一个undefined
类型的道具
只需更改:(props.values?.home?.split("-") || [];
因为 stackblitz 支持可选链接)
它会按您的预期工作
推荐阅读
- java - Java 1.6 上 Base64 的替代方案?
- mysql - MySQL:用户 root@localhost 的访问被拒绝
- java - 将 pojo 类列表中的值放入 hashmap
- php - 我在使用 Wordpress 函数 get_template_part() 时遇到问题
- javascript - 使用纯 JavaScript 通过 Websocket 连接到 MQTT 代理
- python - python kivy 请求导入错误,我有 buılozer.spec
- angular - 我正在尝试发布我的角度库,但它不起作用
- regex - Apache Nifi - 使用 UpdateAttribute 处理器更改属性路径
- reactjs - 如何避免 React Native 中图像下载期间出现“过多的挂起回调:501”错误?
- karate - 在某些情况下,在后台初始化的路径变量会被重置