FCC Program
项目来源是 FCC 上的 “随机引语生成器” (opens in a new tab),花了两天时间从 0 到接近完成,完成的项目放在 CodePen (opens in a new tab)
其实应该是我目前才疏学浅,只用到 React 的冰山一角吧,有一些地方让我花了较长时间。
state在改变之后,不能在同一个function里立马就可以调用到。
class MyComponent extends React.Component {
constructor(props){
super(props)
this.state = {
myData: ''
}
}
...
doSomething(){
this.setState({
myData: 'Strings'
})
//此处myData依然是 ''
console.log(this.state.myData);
}
...
}- 造成上面情况的原因是:想在组件渲染前,
fetch函数获取的数据传给state,并且开始渲染第一次加载的引语。把fetch函数放在componentWillMount()里,然而这个生命周期函数不久后的版本应该就不会再被采用了。之前本想把数据fetch到手就立即渲染到render函数里的{this.state.myData}之类的,但他们都在componentWillMount()里,后来想到设置子组件的方法,并且先通过条件渲染,确认了想要的myData非空值,才开始渲染子组件。
{ myData && <Quote/> }- 设置
<body/>的样式时用到的document.getElementsByTagName()等类似方法获取到的是类数组对象,可以用数字索引[0]获取。