我有麻烦弄清楚如何传递JSX到我的还原状态,即用于全局使用的模态组件,其还原状态,其中一个参数是内容
,这样的内容可以更新为包括JSX代码。
目前,我正在使其呈现正确的内容,但似乎函数调用不正确,并且我还遇到以下错误:
invariant.js:38未捕获错误:对象作为React子对象无效(找到:具有键的对象{dispatchConfig、\u TargetList、isDefaultPrevented、isPropagationStopped、\u dispatchListeners、\u dispatchInstances、nativeEvent、type、target、currentTarget、eventPhase、bubbles、cancelable、timeStamp、defaultPrevented、isTrusted、view、detail、screenX、screenY、clientX、clientY、ctrlKey、shiftKey、altKey、metaKey、getModifierState、button、buttons、rRelatedTarget,pageX,pageY})。如果要渲染子对象集合,请改用数组或使用React加载项中的createFragment(object)包装对象。请检查styled.div的渲染方法。
有很多以下错误:
警告:由于性能原因,此合成事件被重用。如果您看到了这一点,那么您正在访问一个已发布/无效的合成事件的属性
nativeEvent
。这被设置为null。如果必须保留原始合成事件,请使用event.persist()。看见https://fbme(将其替换为不允许链接到fb)/反应事件池以获取更多信息。
实施示例:
从页面调用函数来显示模态并向其添加内容
onToggleModal = () => {
this.props.modalToggle(
(<TopUp account={getSession().accounts[0] || {}} />)
);
}
其中,
this.props.modalToggle
是一个如下的redux操作:
export const modalToggle = (content = '') => ({
type: MODAL_TOGGLE,
payload: content
});
然后,我尝试在模式容器中呈现此类内容:
return (
<div>{this.props.content}</div>
)
我将
React
导入到我的reducer中,希望解决jsx问题,但运气不佳。组件似乎也是作为某种奇怪的对象传递给reducer的。
嘿,已经有一段时间了,但是为了记录在案,我偶然发现了你在回答接受的答案时解释的同一个用例。
您可以通过在modalSlice状态中添加JsxElement|ReactElement|HTMLElement类型的属性来实现这一点:
export interface modalState {
active: boolean;
component?: ReactElement;
}
reducers: {
updateModalComponent: (state, value: PayloadAction<ReactElement>) => {
state.component = value.payload;
},
}
然后,您的模态组件文件可以看起来像这样:
import { ReactElement } from 'react';
import './modal.scss';
interface Props {
active: boolean,
children: ReactElement | JsxElement | HTMLElement,
}
export const Modal = (props: Props) => {
return (
<div id="modal-container">
{
props.active &&
<div id="overlay">
<div id="modal-content-container">
{props.children}
</div>
</div>
}
</div>
)
}
最后在任何地方使用它!
const element = <OtherComponent />;
dispatch(updateModalComponent(element));
干杯
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>
)
问题内容: 我有一个具有与组件本身相同类型的子组件的组件。我也可以渲染孩子,但是孩子似乎无法访问他们的状态。我在Redux中使用React 另外,我正在使用Material-ui中的ListItem(它们最终呈现在List组件中),并且我的代码受到官方redux回购中的树视图示例的严重影响。我的状态如下所示: 所示状态与树状示例中的状态相同 问题答案: 好吧,如果我理解正确,那么您希望这些组件从r
[编辑] 问题不在于isAuth属性,而在于ProtectedRoad中重定向组件中的props.location!尽管如此,如果你有一个问题来理解use Selector或mapStateToProps,去@Versifici的答案! [结束编辑] 我有一个React/Redux应用程序,在authReducer中具有isAuth属性。我想将其传递给我的ProtectedRoute组件以检查行为
问题内容: 我有两个组件SideNav和Dashboard(两个位于不同的js文件中)。SideNav将具有选择框作为过滤器。我必须将一个数组从仪表板组件传递到补充工具栏组件。该数组必须作为选择框的值(在sidenav组件内部)给出。 PS: 如果在两个不同的JS文件中定义了两个不同的组件类,情况将会怎样。例如HomeComponent / Home.js->父组件Dashboard / Dash
尝试使用react datepicker退出搜索,然后检查可用日期。在将道具传递到btn时遇到一些问题,因此我可以根据所选日期创建新页面。 所有东西都正确导入了,我们可以忽略以下内容:我的数据采集器组件和我需要POP使用的BTN搜索组件。 我试图在组件上的每个元素中传递道具,并在组件中内置btn。我读过更好的方法是将道具向下传递到元素链中。所以我最后试着这样做。似乎仍然无法抓住约会狂console
我有一个显示api中所有项目的项目显示组件。当我单击产品时,我想通过指向产品显示页面的链接传递状态,以便我可以仅查看我单击的产品的详细信息。以下是代码产品列表
问题内容: 我知道我可以在渲染组件时通过。我也知道这种方法。但是问题是,由于我的组件不知道它的初始状态,并没有太大帮助。我做。所以我想在渲染时通过它。 这样的东西(伪代码): 我知道我可以使用a 作为初始状态,但这闻起来像是反模式。 我该怎么办? 编辑清晰度 想象一下我有一个组件。到我第一次渲染它时,初始状态对应于数据库中当前注释的快照。当用户包含评论时,此列表将更改,这就是为什么它应该是a 而不