我无法弄清楚如何将JSX传递到我的redux状态,即对于全局使用的模态组件,并且具有redux状态,其中一个参数是 content
这样的内容可以更新为包含JSX代码 .
目前我正在让它呈现正确的内容,但似乎没有正确调用函数,我也得到以下错误:
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}) . 如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象 . 检查styled.div的render方法 .
有很多以下错误:
warning.js:36警告:出于性能原因,将重复使用此合成事件 . 如果您看到这个,那么您将在已发布/无效的合成事件上访问属性nativeEvent . 这被设置为null . 如果必须保留原始合成事件,请使用event.persist() . 有关详细信息,请参阅https:// fbme(替换为,因此不允许链接到fb)/ react-event-pooling .
Example implementation:
从页面调用的函数,用于显示模态并向其添加内容
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 .
1 回答
Redux状态只能包含普通对象和数据类型,因此JSX对象可能会导致问题 . 另外,将JSX对象(基本上是视图)作为状态的一部分,最有可能不是一个好主意 .
相反,您应该传递渲染最终视图所需的任何数据 . 我认为这会奏效: