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]
获取。