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