Ben*_*Ben 17 arrays dictionary join reactjs
我想使用类似array.join的语法在数组的每个元素之间注入一个分隔符.
类似于以下内容:
render() {
let myArray = [1,2,3];
return (<div>
{myArray.map(item => <div>{item}</div>).join(<div>|</div>)}
</div>);
}
Run Code Online (Sandbox Code Playgroud)
我已经使用lodash.transform方法工作,但感觉很难看,我只是想做,.join(<some-jsx>)并在每个项目之间插入一个分隔符.
Ble*_*ess 11
您还可以使用reduce在数组的每个元素之间插入分隔符:
render() {
let myArray = [1,2,3];
return (
<div>
{
myArray
.map(item => <div>{item}</div>)
.reduce((acc, x) => acc === null ? [x] : [acc, ' | ', x], null)
}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
小智 8
尝试使用React Elements加入.join可能并不适合你.这将产生您描述需要的结果.
render() {
let myArray = [1,2,3];
return (
<div>
{myArray.map((item, i, arr) => {
let divider = i<arr.length-1 && <div>|</div>;
return (
<span key={i}>
<div>{item}</div>
{divider}
</span>
)
})}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
您也可以通过组合.reduce和React 片段来实现。
function jsxJoin (array, str) {
return array.length > 0
? array.reduce((result, item) => <>{result}{str}{item}</>)
: null;
}
Run Code Online (Sandbox Code Playgroud)
function jsxJoin (array, str) {
return array.length > 0
? array.reduce((result, item) => <React.Fragment>{result}{str}{item}</React.Fragment>)
: null;
}
const element = jsxJoin([
<strong>hello</strong>,
<em>world</em>
], <span> </span>);
ReactDOM.render(element, document.getElementById('root'));Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.4.1/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.4.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8991 次 |
| 最近记录: |