I have an array and i have a simple string value. I want to mapping my array because i'm try to find my string value.
I have a code like this, but map function doesn't return anything :/
class Application extends React.Component {
constructor(){
super();
this.state = {
questionAnswer: 'is that possible',
question: ['is', 'possible', 'that']
}
}
renderKeywords() {
this.state.question.map((item, key) => {
return (
<span>{item}</span>
);
});
}
render() {
return (
<div>
<div>blabla</div>
{this.renderKeywords()}
</div>
);
}
}
React.render(<Application />, document.getElementById('app'));
I have an array and i have a simple string value. I want to mapping my array because i'm try to find my string value.
I have a code like this, but map function doesn't return anything :/
class Application extends React.Component {
constructor(){
super();
this.state = {
questionAnswer: 'is that possible',
question: ['is', 'possible', 'that']
}
}
renderKeywords() {
this.state.question.map((item, key) => {
return (
<span>{item}</span>
);
});
}
render() {
return (
<div>
<div>blabla</div>
{this.renderKeywords()}
</div>
);
}
}
React.render(<Application />, document.getElementById('app'));
Share
Improve this question
edited Feb 25, 2018 at 5:55
Mayank Shukla
104k19 gold badges162 silver badges145 bronze badges
asked Aug 14, 2017 at 8:26
Ugurcan OmurUgurcan Omur
833 silver badges7 bronze badges
1
- Possible duplicate of Deep nested array of objects not rendering – Shubham Khatri Commented Aug 14, 2017 at 8:50
2 Answers
Reset to default 16Because you are not returning anything from renderKeywords
method, you are returning from map body only. If you don't return anything from function then by default it will return undefined
, you need to return the result of map (array of elements).
Like this:
renderKeywords() {
return this.state.question.map((item, key) => { //here
return (
<span key={key}> {item} </span>
);
});
}
In short you can write it like this:
renderKeywords() {
return this.state.question.map((item, key) => <span key={key}> {item} </span> );
}
Suggestion:
Assign unique key to each element.
Check this answer for more details about key: Understanding unique keys for array children in React.js
you should return the map function itself, and you can achieve it with es6 single line arrow functions too
class Application extends React.Component {
constructor(){
super();
this.state = {
questionAnswer: 'is that possible',
question: ['is', 'possible', 'that']
}
}
renderKeywords() {
return this.state.question.map((item, i) =><span key={i}>{item}
</span>});
}
render() {
return (
<div>
<div>blabla</div>
{this.renderKeywords()}
</div>
);
}
}
React.render(<Application />, document.getElementById('app'));