gpt4 book ai didi

reactjs - 如何为 JSXTransformer 正确包装几个 TD 标签?

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

我有一个包含项目的数组,我想做这样的事情:

<tr>
(until have items in array
<td></td><td></td>)
</tr>

但是如果我这样做,我会收到 JSXTransformer 错误:

Adjacent XJS elements must be wrapped in an enclosing tag

工作版本:

{rows.map(function (rowElement){
return (<tr key={trKey++}>
<td className='info' key={td1stKey++}>{rowElement.row[0].value}</td><td key={td2ndKey++}>{rowElement.row[0].count}</td>
<td className='info' key={td1stKey++}>{rowElement.row[1].value}</td><td key={td2ndKey++}>{rowElement.row[1].count}</td>
<td className='info' key={td1stKey++}>{rowElement.row[2].value}</td><td key={td2ndKey++}>{rowElement.row[2].count}</td>
<td className='info' key={td1stKey++}>{rowElement.row[3].value}</td><td key={td2ndKey++}>{rowElement.row[3].count}</td>
<td className='info' key={td1stKey++}>{rowElement.row[4].value}</td><td key={td2ndKey++}>{rowElement.row[4].count}</td>
.......
</tr>);
})}

我试过这个。但随着<div>封闭标签不能正常工作。

在这里回答: Uncaught Error: Invariant Violation: findComponentRoot(..., ...$110): Unable to find element. This probably means the DOM was unexpectedly mutated

<tbody>
{rows.map(function (rowElement){
return (<tr key={trKey++}>
{rowElement.row.map(function(ball){
console.log('trKey:'+trKey+' td1stKey'+td1stKey+' ball.value:'+ball.value+' td2ndKey:'+td2ndKey+' ball.count:'+ball.count);
return(<div key={divKey++}>
<td className='info' key={td1stKey++}>{ball.value}</td><td key={td2ndKey++}>{ball.count}</td>
</div>);
})}
</tr>);
})}
</tbody>

Please, advise me how to properly wrap few TD tags! I tried use a guide Dynamic Children, but JSXTransformer doesn't allow me do that.

最佳答案

当您返回多个没有包装元素的元素时,通常会发生以下错误

Adjacent XJS elements must be wrapped in an enclosing tag

喜欢

return (
<li></li>
<li></li>
);

这不起作用,因为您实际上返回了两个结果,您只需要返回一个 DOM 节点(带或不带子节点),例如

return (
<ul>
<li></li>
<li></li>
</ul>
);

// or

return (<ul>
{items.map(function (item) {
return [<li></li>, <li></li>];
})}
</ul>);

为了让我正确回答你的问题,你能提供一个 JSFiddle 吗?我试图猜测你想做什么,这是 JSFiddle它的工作原理。

当使用 div 作为包装器时,它实际上从未渲染到 DOM(不知道为什么)。

<tr data-reactid=".0.0.$1">
<td class="info" data-reactid=".0.0.$1.$0.0">1</td>
<td data-reactid=".0.0.$1.$0.1">2</td>
<td class="info" data-reactid=".0.0.$1.$1.0">1</td>
<td data-reactid=".0.0.$1.$1.1">2</td>
<td class="info" data-reactid=".0.0.$1.$2.0">1</td>
<td data-reactid=".0.0.$1.$2.1">2</td>
<td class="info" data-reactid=".0.0.$1.$3.0">1</td>
<td data-reactid=".0.0.$1.$3.1">2</td>
</tr>

编辑:React 16+

从 React 16 开始,您现在可以使用片段。

你现在会这样做

return <>
<li></li>
<li></li>
<>;

或者您可以使用<React.Fragment> , <>是 HTML 片段的简写,它基本上只是一个充当容器的临时父元素,一旦附加到文档中,它就不再存在。

https://reactjs.org/docs/fragments.html

https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment

关于reactjs - 如何为 JSXTransformer 正确包装几个 TD 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034994/

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