开发者问题收集

React hooks useState 与 props 解构失败

2019-11-26
5246

我正在使用 React hooks,并尝试使用传递的 props 设置组件内常量的初始状态。我在网上看到过多个 此类示例 ,但当我这样做时,数组解构会返回整个 props 对象,而不是我想要的实例。

Import React, {useState} from "react";

const MyComponent = (props) => {
   console.log(props) // {date: "2019-11-26", task: "cooking"}
   const [date, setDate] = useState(props);
   console.log(date) // {date: "2019-11-26, task: "cooking"}

   return (...)
}

export default MyComponent;

我假设,使用对象/数组解构, date 的值将自动分配来自 props 的值(字符串 "2019-11-26" ),而不是整个 props 对象。我遗漏了什么?我可以通过设置 const [date, setDate] = useState(props.date) 来解决这个问题,但这会破坏 eslints react 插件的 解构规则 ,所以我想避免它。

编辑

感谢 helloitsjoe 提供的 答案 解决了我的问题!

3个回答

您可以在参数定义中解构 props。请注意,如果您要从 props 设置状态,则最佳做法是将 prop 命名为 initialXdefaultX ,以指示它正在状态中设置,并且从那时起应该使用该状态。

const MyComponent = ({ initialDate }) => {
  const [date, setDate] = useState(initialDate);

  ...
}
helloitsjoe
2019-11-26

您需要像这样解构 props

const MyComponent = ({date, task}) => {
   const [myDate, setMyDate] = useState(date);
  console.log(myDate); //get the date here
}

blueseal
2019-11-26

您可以这样做:

Import React, {useState} from "react";

const MyComponent = (props) => {
   const {date} = props //destructing
   console.log(props) // {date: "2019-11-26", task: "cooking"}
   const [date, setDate] = useState(date);
   console.log(date) 
   return (...)
}

export default MyComponent;

Import React, {useState} from "react";

    const MyComponent = ({date}) => { //destructing
       const [date, setDate] = useState(date);
       console.log(date) 

       return (...)
    }

    export default MyComponent;
bakar_dev
2019-11-26