gpt4 book ai didi

javascript - react 全局组件

转载 作者:行者123 更新时间:2023-11-29 10:29:07 26 4
gpt4 key购买 nike

我有 vue.js 背景,最近才开始研究 React。

我有一个组件:PageContent.jsx,我希望使用它而不必经常导入它以便能够在渲染函数 (JSX) 中使用它。

在 vue 中,可以使用以下方法将组件全局化:

Vue.component(componentName, componentObject)

react有没有类似的东西?

最佳答案

嗯,React 中没有任何类型的“全局”组件。每个组件都必须作为 Prop 导入或传递。如果你想避免向每个文件添加导入,你有几个选择:

1) 创建一个 Higher Order Component呈现 PageContent 和包装的组件。

import PageContent from './PageContent';

const withPageContent = WrappedComponent => {
return class extends React.Component {
render () {
return (
<PageContent>
<WrappedComponent />
</PageContent>
)
}
}
};

export default withPageContent;

// Usage

import withPageContent from './withPageContent';

class MyComponent extends React.Component {
render () {
return (
<div>
I'm wrapped in PageContent!
</div>
)
}
}

export default withPageContent(MyComponent);

2) 将 PageContent 作为 prop 传递给组件:

import PageContent from './PageContent';

export default class App extends React.Component {
render() {
return (
<React.Fragment>
<Child1 content={PageContent} />
<Child2 content={PageContent} />
</React.Fragment>
)
}
}

// Usage

export default class Child1 extends React.Component {
render () {
const PageContent = this.props.content;
return (
<PageContent>
I'm wrapped in PageContent!
</PageContent>
)
}
}

export default class Child2 extends React.Component {
render () {
const PageContent = this.props.content;
return (
<PageContent>
I'm wrapped in PageContent!
</PageContent>
)
}
}

关于javascript - react 全局组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com