1A: 遇到的第一个问题就是子父级传值的问题,传值这个问题的解决方案在本身写的 blog 中能够看到。javascript
1B: 同级之间传值问题html
1C:使用 react-router 的时候遇到的跳转的问题,在配合 个人 tab 的使用的时候,主界面因为有两个小的 tabs(外海银行和社保平台),开始直接使用的 react-weui的 tab 切换,可是发如今不少界面跳转的时候会出现跳转的时候并非跳转到对应的正确的界面。java
1D: 每一个组件的结构问题,应该多使用无状态的组件,耦合度过高。须要优化react
1E: 用户数据和一些状态的接口数据每次在页面加载的时候都要获取一次,比较浪费内存和加载时间ios
// old one
onChange={this.handleContentChange.bind(this)} />
// good one
onChange={e=>{this.handleContentChange(e)}} />
复制代码
//合理的使用 _render(),把须要作数据处理和转换的 render 先分离出来再作 render 处理
//部分引用代码就不贴了
_render() {
const { user } = this.state;
return (
user && (
<div className="box">
<ul>
<li> 姓名: {user.name || '暂无'}</li>
<li> 状态: {user.status || '暂无'}</li>
<li> 手机: {user.tel || '暂无'}</li>
</ul>
</div>
)
);
}
render() {
return (
<Page className="page">
<Title title="详细信息" />
{this._render()}
</Page>
);
}
复制代码
//仍是刚刚那个栗子
getUser = async () => {
this.setState({
loading: true,
error: null
});
try {
const { data } = await http.get(API.user());
this.setState({
user: data
});
} catch (error) {
this.setState({
error
});
}
this.setState({
loading: false
});
};
_render() {
// 固然咱们首先要根据项目来自定义咱们的 loading 框和 error 框,一些开源的 UI 框架也有这些设计,直接用也能够。
const { loading, error, user } = this.state;
if (loading) {
return <Loading className="loading" />;
}
if (error) {
return <ErrorBox error={error} onClick={this.getUser} />;
}
return (
user && (
<div className="box">
<ul>
<li> 姓名: {user.name || '暂无'}</li>
<li> 状态: {user.status || '暂无'}</li>
<li> 手机: {user.tel || '暂无'}</li>
</ul>
</div>
)
);
}
render() {
return (
<Page className="page">
<Title title="详细信息" />
{this._render()}
</Page>
);
}
复制代码
// old one
class CommentInput extends Component {
constructor () {
super()
this.state = {
username: '',
content: ''
}
}
...
}
//good one
/* ** 咱们能够不用 super 来继承了,如今能够简写 */
class CommentInput extends Component {
state = {
username: '',
content: ''
}
...
}
复制代码
this.props.$formutil = {
$params: { amount: 100 },
a: 'test',
b:[{ c:'hello' },2,3]
}
//可使用同数据结构相同的方法直接拿到内部的 amount
const { $params: { amount }, a , b:[{ c }] } = this.props.$formutil;
复制代码