Sta*_*rks 6 javascript components reactjs create-react-app
我来自 vue.js 背景,我最近才开始研究 React。
我有一个组件:PageContent.jsx,我希望使用它而不必经常导入它以便能够在渲染函数 (JSX) 中使用它。
在 vue 中,可以使用以下方法对组件进行全球化:
Vue.component(componentName, componentObject)
Run Code Online (Sandbox Code Playgroud)
反应中有没有类似的东西?
嗯,React 中没有任何类型的“全局”组件。每个组件都必须作为 prop 导入或传递。如果您想避免向每个文件添加导入,您有几个选择:
1) 创建一个高阶组件来渲染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);
Run Code Online (Sandbox Code Playgroud)
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>
)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9597 次 |
| 最近记录: |