react-redux使用connect和forwardRef报错

Unhandled Rejection (Invariant Violation): You must pass a component to the function returned by connect. Instead received {}

修改后的代码

const AmisCom = forwardRef((props: any, ref) => {
    let { setJsonByKey, amis, path } = props
    let isPathJson = amis[path]
    const [amisJsonData, setAmisJson] = useState<AmisJson>()
    const [preview, setPreview] = useState(true)
    const onChange = (e: any) => {
        setAmisJson(e)
    }

    const sava = () => {
        setJsonByKey(path, amisJsonData)
    }

    useImperativeHandle(ref, () => ({
        sava: sava,
    }))
    return (<>
        <div>
            <Space>
                <Button onClick={() => setPreview(!preview)}>{preview ? '编辑' : '预览'}</Button>
                <Button type="primary" onClick={sava} >保存</Button>
            </Space>
            <Editor
                $schemaUrl={schemaUrl}
                preview={preview}
                value={isPathJson && amisJsonData ? amisJsonData ? amisJsonData : isPathJson : schema}
                onChange={onChange}
                amisEnv={{ fetcher: amisReq }}
            />
        </div>

    </>)
})

export default connect(
    (state: State) => ({ amis: state.amis }),
    {
        setJsonByKey: setAmisActionByKey
    }, null, { forwardRef: true }
)(AmisCom);
  • connect第一个函数有四个参数,第四个参数改成{ forwardRef: true }就可以啦
  • 有人说也可以改第二个参数AmisCom、改成AmisCom.render
react-redux是一个流行的用于在React应用中管理全局状态的库。Redux是JavaScript中一个用于状态管理的工具,它通过将状态存储在单一的全局状态树中,并使用纯函数来处理状态的变化,使得状态管理变得简单而可预测。 在React使用Redux,通常需要使用react-redux库提供的connect函数。connect函数是一个高阶组件,用于连接React组件和Redux的状态管理机制。 connect函数的基本用法是将React组件作为参数传递给connect,并在返回的函数中配置所需的状态和动作。它接受两个参数:mapStateToProps和mapDispatchToProps。 mapStateToProps是一个函数,用于从Redux的全局状态树中选择所需的状态,并作为React组件的属性传递给组件。这样,组件可以通过props访问到所需的状态,并将其渲染到页面中。 mapDispatchToProps是一个函数,用于将Redux的动作绑定到组件的props上。这样,组件可以通过调用props中的方法来触发Redux中定义的动作。 connect函数还可以接收一个可选的第三个参数,用来配置其他属性,比如在组件未连接到Redux时是否抛出警告。 使用connect函数后,就可以将Redux的状态和动作与React组件连接起来,并使其能够访问和操作全局状态。这样,组件就可以根据状态变化来更新UI,并通过触发动作来改变全局状态。 总而言之,react-reduxconnect函数提供了一种简单而方便的方式来连接React组件与Redux的状态管理机制,使得在React应用中管理全局状态变得更加容易和可维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值