所以,得到这个,伙计们。我从Firebase检索了一些数据,然后将其加载到我的state
中,然后映射它,但我似乎无法对它做任何有用的事情。它变得更加怪异,因为在map
内,console.log(mappedValue)
会返回我期望的值,但<h1>{mappedValue}</h1>
不会。是什么给了什么?
相关网页:
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { app } from '../helpers/firebaseHelpers.js';
import '../../stylesheets/home.css';
import '../../stylesheets/forms.css';
import '../../App.css';
export class AuthQuotes extends Component {
constructor(props) {
super(props);
this.state = {
quotes: []
};
}
componentDidMount() {
this.getQuotes();
this.props.changePage("quotes");
}
getQuotes() {
this.firebaseRef = app.database().ref(`quotes`);
var quotes = [];
this.firebaseRef.on('child_added', snapshot => {
var quote = snapshot.val();
quote['key'] = snapshot.key;
quotes.push(quote);
this.setState({
quotes: quotes,
});
});
}
renderQuote(quote) {
return (
<h1>hi</h1>
)
}
render() {
console.log(this.state.quotes[0])
return (
<div>
{this.state.quotes.map(quote => {
<input type="text" placeholder={quote.person.fName} />
console.log(quote.person.fName)
})}
</div>
);
}
}
export default AuthQuotes
答案 0 :(得分:2)
你忘记返回map
方法
this.state.quotes.map(quote =>
{
console.log(quote.person.fName);
return <input type="text" placeholder={quote.person.fName} />
})
删除括号后,返回将隐式
this.state.quotes.map(quote => <input type="text" placeholder={quote.person.fName} />)
答案 1 :(得分:2)
解除删除{}
:
一切背后都有正当理由,有两个 ways of using arrow functions :
1-简洁的身体:当我们这样写时:a.map(el => el*2)
2-块体:当我们这样写时:a.map(el => { return el*2; } )
对于第一个,在简洁的主体中,只指定了一个表达式,它成为显式返回值,而在块体中,必须在body中使用显式的return语句。
答案 2 :(得分:0)
原来,这是一个无声的语法错误,没有实际的错误信息,我真的不知道它为什么会发生。改变这个:
{this.state.quotes.map(quote => {
<input type="text" placeholder={quote.person.fName} />
console.log(quote.person.fName)
})}
对此:
{this.state.quotes.map(quote =>
<input type="text" placeholder={quote.person.fName} />
console.log(quote.person.fName)
)}
(即在delta {
之后没有大括号=>
使其成功.ES6 WTF?如果有人能够解释我的原因,为什么这会让人感觉良好,我将不胜感激。