[英]Flux + React.js - Callback in actions is good or bad?
讓我解釋一下我最近遇到的問題。
我有React.js + Flux驅動的應用程序:
find
文章的細節。 這很好用。 我觸發了向服務器發出請求並使用數據傳播存儲的操作,當我轉到詳細信息屏幕時,我只是從存儲中的該數組中獲取必要的文章。 User loads details view
- > component did mount
- > stores are empty
- > rendered empty
- > fetchArticles action is triggered
- > request response is 200
- > stores now have list of articles
- > component did update
- > rendered with data successfully
組件可能如下所示:
let DetailsComponent = React.createClass({ _getStateFromStores() { let { articleId } = this.getParams(); return { article: ArticleStore.getArticle(articleId) }; }, componentDidMount() { // fire only if user wasn't on the list before // stores are empty if (!this.state.article) { ArticleActions.fetchArticles('listType'); } }, render() { return <ArticleDetails article={this.state.article} />; } });
接下來是有趣的部分:
我想出的是在組件內部使用回調,感覺更清潔:
let DetailsComponent = React.createClass({ _getStateFromStores() { let { articleId } = this.getParams(); return { article: ArticleStore.getArticle(articleId) }; }, componentDidMount() { if (!this.state.article) { ArticleActions.fetchArticles('listType', () => { this._requestAdditionalData(); }); } this._requestAdditionalData(); }, _requestAdditionalData() { if (this.state.article) { ArticleActions.fetchAdditional(this.state.article.property); } }, render() { return <ArticleDetails article={this.state.article} />; } });
你的意見是什么?
考慮移動第二個調用以獲取ArticleDetails組件componentDidMount()生命周期方法的詳細文章。
因此,如果未設置文章,請不要通過返回null / false來呈現ArticleDetails組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.