反应 UseState 真/假

时间:2021-01-05 20:28:58

标签: javascript reactjs redux react-redux use-state

我正在尝试使用来自 redux 存储的数据为我的表单组件初始化一些状态。如果 shippingAddress 对象为空,我想将 formData 对象的属性设置为空字符串。不知道如何让它工作。目前我收到一条错误消息 saying TypeError: Cannot read property 'address' of null

const cart = useSelector((state) => state.cart);
const { shippingAddress } = cart;
    
const [formData, setFormData] = useState(
        {
          address: shippingAddress.address,
          city: shippingAddress.city,
          country: shippingAddress.country,
          postalCode: shippingAddress.postalCode,
        } || {
          address: "",
          city: "",
          country: "",
          postalCode: "",
        }
      );

3 个答案:

答案 0 :(得分:2)

您可以使用 ternary 来完成此操作,以首先嗅探 shippingAddress 的存在/不存在:

const cart = useSelector((state) => state.cart);
const { shippingAddress } = cart;
    
const [formData, setFormData] = useState(
  shippingAddress
    ? {
      address: shippingAddress.address,
      city: shippingAddress.city,
      country: shippingAddress.country,
      postalCode: shippingAddress.postalCode,
    }
    : {
      address: "",
      city: "",
      country: "",
      postalCode: "",
    }
);

或者,您可以使用 optional chaining ?.nullish coalescing ?? 运算符来实现相同的效果:

const cart = useSelector((state) => state.cart);
const { shippingAddress } = cart;
    
const [formData, setFormData] = useState(
  {
    address: shippingAddress?.address ?? '',
    city: shippingAddress?.city ?? '',
    country: shippingAddress?.country ?? '',
    postalCode: shippingAddress?.postalCode ?? '',
  }
);

请注意,第二个选项是一个较新的 JS 功能,因此请检查您是否有相关的 Babel 或浏览器支持。

答案 1 :(得分:1)

添加安全检查(试试这个)

start = pd.datetime(2020,1,1)
end = pd.datetime(2020,1,31)  
index = pd.date_range(start, end)
mockdata = pd.DataFrame()
mockdata['DateOrigin'] = index

答案 2 :(得分:1)

const cart = useSelector((state) => state.cart);
const {
    shippingAddress
} = cart;
const [formData, setFormData] = useState(shippingAddress ? {
    address: shippingAddress.address,
    city: shippingAddress.city,
    country: shippingAddress.country,
    postalCode: shippingAddress.postalCode
} : {
    address: "",
    city: "",
    country: "",
    postalCode: "",
});
相关问题