我有一个接收原始文本和一些扩展信息的组件。它使用此信息增强文本,并返回一组文本片段和增强的组件。
最初,我创建了一个函数来进行转换并返回转换后的内容,使用
React.createElement
:
const transform = (text, data) => {
// do the transformation
// ...
// In the end, I have this array consisting of text snippets and Components
transformedElements = [
'text',
<MyLink>Word</MyLink>,
'more text',
<MyLink>AnotherWord</MyLink>,
];
return React.createElement('div', null, transformedElements);
}
但是后来我把它写成一个组件:
const Transformed = ({text, data}) => {
// do the transformation ...
transformedElements = [
'text',
<MyLink>Word</MyLink>,
'more text',
<MyLink>AnotherWord</MyLink>,
];
return transformedElements;
// also works as:
// return React.createElement('div', null, transformedElements);
}
我意识到如果我直接这样做
return transformedElements
也会起作用。
我猜它的性能更好,因为它不调用 createElement,而且我注意到的唯一区别是返回的组件不会像之前的实现那样被包装在包含元素中。
那么,我应该调用
createElement
还是只返回数组?每种方法的优点、缺点和缺点是什么(如果有)?
const Transformed = ({ text, data }) => {
const transformedElements = [
'text',
<MyLink key="word-link">Word</MyLink>,
'more text',
<MyLink key="another-word-link">AnotherWord</MyLink>,
];
return transformedElements; // Just return the array
};
React.createElement()
(如果您需要包装纸)const transform = (text, data) => {
const transformedElements = [
'text',
<MyLink key="word-link">Word</MyLink>,
'more text',
<MyLink key="another-word-link">AnotherWord</MyLink>,
];
return React.createElement('div', null, transformedElements); // Creates a div wrapper
};
div
),对于布局控制很有用。createElement
。