React容器中用于流类型的useSelector

问题描述 投票:1回答:1

我来自普通的javascript世界,现在我不得不用钩子重写一个类组件,但是我在流程方面遇到了一些问题,从未使用过。

我有一个要使用钩子重写的功能组件,但是我无法使这些选择器起作用:

type Props = {
  history: Object,
  sets: Array<Object>,
  tArray: Object,
  gu: Object
};

const Page = () => {

  const { tArray} = useSelector<Object>(state => state.t.tArray.map(x => ({
    A: x.A,
    B: x.B,
    C: x.C
    date: x.lastExportDate
      ? dateFormat(new Date(x.lastExportDate), 'm/dd/yyyy')
      : []
  })))

  const { gu } = useSelector(state => state.gu)
  const { sets } = useSelector(state => state.sets.allSets.map(x=> ({
    value: x.setId,
    label: x.name
  })))

  const [showModal, setShowModal] = useState(false);

  return (
    <div>
    </div>
  )

}


export default HomePage;

我不知道如何编写选择器的返回类型以及容器收到的道具。

编写选择器的前两种方法均无效。

谢谢

reactjs react-redux react-hooks flowtype
1个回答
0
投票

这将起作用:

const { gu } = useSelector(state)
const { sets } = useSelector(state => state.sets.allSets.map(x=> {
  return {
    sets: {
      value: x.setId,
      label: x.name
   }
  }))

返回值应包含构造所需的内容。因此,第一个结构gu与状态C gu对象本身无关。第二个构造所需的sets对象没有返回所需的对象。


基本上,我想说的是:

假设我们有一个对象-

const obj = { foo: 1 }

现在,如果我们要构造foo以获取值:

const { foo } = obj.foo // wrong
const { foo } = obj // right

我希望这对您现在很清楚。

© www.soinside.com 2019 - 2024. All rights reserved.