我来自简单的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;
我不知道如何编写选择器的返回类型和容器接收到的道具。
前两种编写选择器的方法都不起作用。
谢谢
这将起作用:
const { gu } = useSelector(state)
const { sets } = useSelector(state => state.sets.allSets.map(x=> {
return {
sets: {
value: x.setId,
label: x.name
}
}))
回报值应该满足建筑的需求。因此,第一个构造gu
与状态保持gu
对象本身无关。第二个构造所需的sets
对象没有返回所需的对象。
基本上,我想说的是:
假设我们有一个对象——
const obj = { foo: 1 }
现在,如果我们想构建foo
来获得值:
const { foo } = obj.foo // wrong
const { foo } = obj // right
我希望你现在已经清楚了。