Reputation: 260
const test = () = {
const array = ['hello', 'myNameIs']
return (
{
array.map((arr) => (
<div>{arr}</div>
<button>Edit</button>
)
}
)
}
This .map() method is not working as I intended.
With the code, I was trying to get
hello [button]
myNameIs [button]
like this.
But when I actually render the code, I get
hello MynameIs [button]
In this kind of situation, How can I change the .map() statement?
Should I use an index?
Upvotes: 3
Views: 9429
Reputation: 52
You are not using the correct syntax for the arrow function
It should be like
const test = ()=>{}
React component JSX should return one parent container try wrapping it like:
const Test = () => {
const array = ["hello", "myNameIs"];
return (
<>
{array.map((arr) => {
return (
<>
<div>{arr}</div>
<button>Edit</button>
</>
);
})}
</>
)
}
Here is the working code sandbox link https://codesandbox.io/s/kind-easley-jxiei?file=/src/App.js:57-336
I Hope it helps.
Upvotes: 0
Reputation: 203
const test = () = {
const array = ['hello', 'myNameIs']
return (
{array.map((item,key) => (
<div key={item}>{item}</div><button>Edit</button>
)})
}
Upvotes: 0
Reputation: 6554
Take a look at below example, I created it almost by your code, it is working as you expected without problem.
function App() {
const array = ['hello', 'myNameIs'];
return array.map(item => (
<div key={item}>
{item} <button>Edit</button>
</div>
));
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
Upvotes: 1
Reputation: 50291
Create the button inside the div
tag. Also you can use style to align the items as required
array.map((arr) => (
<div>{arr} <button>Edit</button></div>
)
Upvotes: 0