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;
複製代碼