我无法弄清楚如何将JSX传递到我的redux状态,即对于全局使用的模态组件,并且其redux状态,其中一个参数为content
,此类内容可以更新为包含JSX代码。 / p>
目前我正在使用它来呈现正确的内容,但似乎没有正确调用函数并且我也遇到以下错误:
invariant.js:38未捕获错误:对象作为React子对象无效 (找到:带键的对象{dispatchConfig,_targetInst, isDefaultPrevented,isPropagationStopped,_dispatchListeners, _dispatchInstances,nativeEvent,type,target,currentTarget,eventPhase,bubbles,cancelable,timeStamp,defaultPrevented, isTrusted,view,detail,screenX,screenY,clientX,clientY,ctrlKey, shiftKey,altKey,metaKey,getModifierState,button,buttons, relatedTarget,pageX,pageY})。如果你想渲染一个集合 children,使用数组代替或使用包装对象 来自React附加组件的createFragment(对象)。检查渲染方法
styled.div
。
有很多以下错误:
warning.js:36警告:此合成事件将重复用于提高性能 原因。如果您看到这个,那么您正在访问该物业 已发布/无效的合成事件
nativeEvent
。这是设置为 空值。如果您必须保留原始合成事件,请使用 event.persist()。请参阅https://fbme(replaced这样,因此不允许链接到fb)/ react-event-pooling以获取更多信息 信息。
示例实施:
从页面调用以显示模态并向其添加内容的函数
onToggleModal = () => {
this.props.modalToggle(
(<TopUp account={getSession().accounts[0] || {}} />)
);
}
this.props.modalToggle
是这样的redux动作:
export const modalToggle = (content = '') => ({
type: MODAL_TOGGLE,
payload: content
});
然后我尝试在我的Modal容器中呈现这样的内容:
return (
<div>{this.props.content}</div>
)
我将React
导入我的reducer,希望解决jsx问题,但没有运气。它似乎也将组件作为某种奇怪的对象传递给reducer。
答案 0 :(得分:1)
Redux状态只能包含普通对象和数据类型,因此JSX对象可能会导致问题。另外,将JSX对象(基本上是一个视图)作为您所在州的一部分,最有可能不是一个好主意。
相反,您应该传递渲染最终视图所需的任何数据。我认为这样可行:
onToggleModal = () => {
this.props.modalToggle(getSession().accounts[0] || {});
}
export const modalToggle = (account = {}) => ({
type: MODAL_TOGGLE,
account: account
});
return (
<div><TopUp account={account} /></div>
)