react-redux - 在反应中的同一组件中添加和编辑
问题描述
如果 url 是 shipping/1245abcde,则表单应加载来自 dispatch(getOrderDetails(orderId)) 的数据。第一次加载时它确实工作正常,但是当我在浏览器中单击刷新时,它在行显示错误:setAddress
TypeError: Cannot read property 'shippingAddress' of undefined
在这里,我不能在 useEffect 中调用 useSelector。无论如何要在 useEffect() 中获取 orderDetails 状态。
下面是 ShippingScreen 组件
const ShippingScreen = ({ history, match }) => {
const orderId = match.params.orderId
const dispatch = useDispatch()
const cart = useSelector((state) => state.cart)
const { shippingAddress } = cart
const [address, setAddress] = useState(shippingAddress.address)
const [city, setCity] = useState(shippingAddress.city)
const [postalCode, setPostalCode] = useState(shippingAddress.postalCode)
const [country, setCountry] = useState(shippingAddress.country)
const orderDetails = useSelector((state) => state.orderDetails)
const { order } = orderDetails
useEffect(() => {
if (orderId) {
dispatch(getOrderDetails(orderId))
setAddress(order.shippingAddress.address)
setCity(order.shippingAddress.city)
setPostalCode(order.shippingAddress.postalCode)
setCountry(order.shippingAddress.country)
}
}, [orderId])
解决方案
推荐阅读
- php - Laravel 显示用户的特定项目详细信息
- c# - 如何在 .Net Core ActionFilterAttribute 中使用依赖注入?
- c# - 使用 GCloud 模拟器的 Google Cloud PubSub V1
- bash - 在 Azure 中触发 shell 脚本
- r - 错误的观察次数 - nobs
- c# - 检测到 Newtonsoft.Json 的版本冲突。直接安装/引用 Newtonsoft.Json 11.0.2(Azure 函数视觉工作室)
- ssh - Alexa 开发人员控制台端点错误
- asp.net - 如何允许我的 Azure Web 应用程序访问 Active Directory?
- python - 每隔几分钟自动执行 CMD 命令的 Python 程序
- lua - 有没有办法使用 Lua 的 Busted 测试框架设置看门狗计时器?