gpt4 book ai didi

javascript - 如何连接 React JSX 对象

转载 作者:行者123 更新时间:2023-12-03 06:50:36 25 4
gpt4 key购买 nike

我想添加<p>标签 ExtendedComponent通过调用 super.render() ,问题是我不知道是否可以修改已经定义的 jsx 对象。理想的情况是只写 parentTemplate + <p>Some paragraph</p> ,但这不起作用。

class BaseComponent extends React.Component {
get title() {
return 'I am base component';
}

render() {
return <h1>Hello {this.title}</h1>;
}
}

class ExtendedComponent extends BaseComponent {
get title() {
return 'I am extended component';
}

render() {
var parentTemplate = super.render();
// append <p>Some paragraph</p> to parentTemplate
return parentTemplate;
}
}

ReactDOM.render(
<ExtendedComponent />,
document.getElementById('test')
);

最佳答案

就像评论中提到的 azium 一样,这在 React 中并不常见。但是,如果您需要这样做,可以这样完成:

render() {
var parentTemplate = super.render();
// append <p>Some paragraph</p> to parentTemplate
return <div>{parentTemplate}<p>Some paragraph</p></div>;
}

你必须将它包装在一个div中,因为react元素只能返回一个元素,而不是它们的列表。 parentTemplate 就像任何其他 jsx 一样,但它位于变量中。您可以使用 {variableName} 语法将变量添加到 JSX 中。

另一种方法,更像“ react ”:

class BaseComponent extends React.Component {
render() {
return <h1>Hello {this.props.title}</h1>;
}
}
BaseComponent.propTypes = {
title: React.PropTypes.string
};
BaseComponent.defaultProps = {
title: 'I am base component'
};

class ExtendedComponent extends React.Component {
render() {
return (
<div>
<BaseComponent title="I am extended component"/>
<p>Some paragraph</p>
</div>
);
}
}

ReactDOM.render(
<ExtendedComponent />,
document.getElementById('test')
);

JSFiddle

这里的ExtendedComponent是一个高阶组件,而不是继承自BaseComponent的组件。大多数时候,这是一个更容易推理的关注点分离,并且大多数 React 应用程序都是以这种方式构建的,而不是基于继承。

希望这有帮助!

关于javascript - 如何连接 React JSX 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528323/

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