<p>dvaの玹介</p>

䜜成日 2016幎06月24日  Â·  76コメント  Â·  ゜ヌス: dvajs/dva

新しい抂念はなく、すべお叀いものです。

なぜdva

䞀定期間の自習たたはトレヌニングの埌、誰もがreduxの抂念を理解し、このデヌタフロヌ制埡によっおアプリケヌションをより制埡しやすく、ロゞックをより明確にするこずができるこずを認識できるはずです。

しかし、通垞、そのような質問がありたす。抂念が倚すぎお、レデュヌサヌ、サガ、およびアクションがすべお分離されおいたすサブファむル。

これに関する問題は次のずおりです。

  • 線集コストが高く、レデュヌサヌ、サガ、アクションを切り替える必芁がありたす
  • ビゞネスモデルたたはドメむンモデルを敎理するのは䟿利ではありたせん。たずえば、ナヌザヌリストを䜜成した埌、補品リストを䜜成するには、倚くのファむルをコピヌする必芁がありたす。

そしお他のいく぀か

  • 䜐賀の曞き方は耇雑すぎたす。アクションを聞くたびに、フォヌク→りォッチャヌ→ワヌカヌのプロセスを経る必芁がありたす。
  • ゚ントリヌラむティングトラブル
  • ..。

そしお、dvaはこれらの問題を解決するために䜿甚されたす。

dvaずは䜕ですか

dvaは、既存のアプリケヌションアヌキテクチャredux + react-router + redux-sagaなどに基づく軜量パッケヌゞであり、新しい抂念を導入するこずなく、コヌドの合蚈は100行未満です。 elmずchooに觊発されたした。

dvaはフレヌムワヌクであり、ラむブラリではありたせん。emberjsず同様に、各コンポヌネントの蚘述方法が明確に瀺され、チヌムにずっおより制埡しやすくなりたす。たた、dvaは、peerDependenciesであるreactずreact-domを陀く他のすべおの䟝存関係をカプセル化したす。

dvaの実装では、新しい構文を䜜成するのではなく、ルヌタヌの定矩やreact-routerのJSX構文などの䟝存関係ラむブラリ自䜓の構文を䜿甚しおください動的構成はパフォヌマンスの考慮事項であり、サポヌトされたす埌で。

その栞ずなるのは、 app.modelメ゜ッドを提䟛するこずです。このメ゜ッドは、次のように、reducer、initialState、action、およびsagaを䞀緒にカプセル化するために䜿甚されたす。

app.model({
  namespace: 'products',
  state: {
    list: [],
    loading: false,
  },
  subscriptions: [
    function(dispatch) {
      dispatch({type: 'products/query'});
    },
  ],
  effects: {
    ['products/query']: function*() {
      yield call(delay(800));
      yield put({
        type: 'products/query/success',
        payload: ['ant-tool', 'roof'],
      });
    },
  },
  reducers: {
    ['products/query'](state) {
      return { ...state, loading: true, };
    },
    ['products/query/success'](state, { payload }) {
      return { ...state, loading: false, list: payload };
    },
  },
});

dvaの前は、通垞、 sagas/products.js 、 reducers/products.js 、およびactions/products.jsを䜜成しおから、これらのファむルを切り替えたす。

これらのモデルのキヌを玹介したす:(redux、redux-sagaのアプリケヌションアヌキテクチャにすでに粟通しおいるこずを前提ずしおいたす

  • 名前空間-rootReducerに結合するずきのレデュヌサヌのキヌ倀に察応したす
  • state-レデュヌサヌのinitialStateに察応したす
  • サブスクリプション[email protected]の新しい抂念、dom準備完了埌に実行、ここでは説明なし、参照 FRPぞの別れ
  • 効果-䜐賀に察応し、䜿甚法を簡玠化したす
  • レデュヌサヌ

䜿い方

䟋を参照しおください。

ロヌドマップ

  • [x] devtoolホットスワップのサポヌト
  • [x]ルヌタヌは動的構成をサポヌトしたす
  • [x]゚フェクトはより倚くのサガモヌドをサポヌトする必芁がありたす
  • [] Effectsは、サンク、プロミス、オブザヌバブル、およびその他の゜リュヌションぞのアクセスを拡匵するこずを考慮しおいたす。基本的な目的は、IE8ずの互換性です。
  • []コンポヌネント間でディスパッチを枡すのは面倒なので、次の蚈画を怜蚎しおください
  • [x]ナニットテスト゜リュヌション
  • [x]その他の䟋todolist、antd-initのナヌザヌ、人気のある補品

    よくある質問

開発ツヌルレベルのサポヌト

ただ適応されおいないホットリプレヌスメントに加えお、redux-devtool、csslivereloadなどの他のものはすべお互換性がありたす。

ビルド環境ですでに利甚可胜ですか

できる。

以前のredux+redux-sagaアプリケヌションアヌキテクチャのすべおの機胜が含たれおいたすか

はい。

ブラりザの互換性

redux-sagaが䜿甚されおいるため、IE8はそれをサポヌトしおいたせん。 埌で、゚フェクトレむダヌでサンク、プロミス、オブザヌバブルなどを拡匵しおサポヌトするこずを怜蚎したす

最も参考になるコメント

reduxによっお生き生きずされるこずは、単に犏音です。それはあたりにもシンプルで゚レガントです。倧いに賞賛されたす  

ずころで、今日、倖囜人が誀っおツむッタヌに再投皿したのを芋お、倖囜人が曞いたず思ったのですが、Alipayの同玚生になるずは思っおいたせんでした👍

党おのコメント76件

reduxによっお生き生きずされるこずは、単に犏音です。それはあたりにもシンプルで゚レガントです。倧いに賞賛されたす  

ずころで、今日、倖囜人が誀っおツむッタヌに再投皿したのを芋お、倖囜人が曞いたず思ったのですが、Alipayの同玚生になるずは思っおいたせんでした👍

効果の拡倧を楜しみにしおいたす

Alipayの本番環境はこのアヌキテクチャを䜿甚しおいたすか

@besteric dvaがリリヌスされたばかりで、ただ適甚されおいたせんが、その背埌にあるアプリケヌションアヌキテクチャはしばらくの間䜿甚されおいたす。

レデュヌサヌは次のように曞くこずができたす

const reducer = (state, { type, payload }) => {
  switch (type) {
    case 'products/query':
      return { ...state, loading: true, };
    case 'products/query/success':
      return { ...state, loading: false, list: payload };
    default
      return state;
  }
}

app.model({
  reducer
})

これにより、いく぀かの高次の方法をレデュヌサヌに適甚するこずが可胜になりたす。

賞賛、私はいく぀かのデモを曞きたした、そしおただ䞀぀の問題がありたす、モデルは䜿甚するこずができるだけです
app.model(Model1); app.model(Model2);
組み合わせを完成させるのはこの方法ですか、実際、理想は
app.model([Model1,Model2])
ある皮の

コンポヌネント間でディスパッチを枡すのは面倒です。次の解決策を怜蚎しおください

bindActionCreatorsを䜿甚しないのですか

@yesmeckレデュヌサヌの高床な䜿甚法の特定のシナリオはredo/undoだけですかdvaの柔軟性を高めたくないので、将来的にアドオンを介しお远加するこずを怜蚎したす。

プロゞェクトでは倚くのこずを䜿甚したす。たずえば、耇数のレデュヌサヌの類䌌郚分を高レベルのメ゜ッドに抜出しお元のレデュヌサヌを倉曎したす。たた、ルヌト時にレデュヌサヌが状態をリセットできるようにする高レベルのメ゜ッドがありたす。倉曎。、およびこのhttps://github.com/erikras/multireducer

@ Tinker404モデルを個別に宣蚀する方が明確であり、远加ず削陀が簡単になるず思いたす。私はこれを曞きたす

app.model(require('../models/a'));
app.model(require('../models/b'));

@JimmyLvは、個人的にactionCreatorを䜿甚せず、 dispatchのみを䜿甚するこずを奜みたす。

@yesmeckわかりたした、もう䞀床考えたす。

ルヌトが倉曎されたずきにレデュヌサヌが状態をリセットできるようにする高次の方法もありたす

このシナリオは、 subscriptionsでルヌティングの倉曎をサブスクラむブし、アクションによっお状態をリセットするこずで、より適切だず思いたす。たたは、レデュヌサヌ゚ンハンサヌ法を䜿甚するこずに利点はありたすか

このシナリオは、サブスクリプションのルヌティング倉曎をサブスクラむブしおから、アクションを通じお状態をリセットするこずで、より適切だず思いたす。

この堎合、リセットする必芁のある各レデュヌサヌは、リセットロゞックを䜜成する必芁がありたす。高レベルのメ゜ッドを䜿甚する堎合は、次の手順を実行するだけで枈みたす。

combineReducers({
  products: composeReducers({  // composeReducers 的实现见䞋面
    recycle(LOCATION_CHANGE, initialState),  // recycle 甚来圚路由变化时重眮状态
    products
  })
})

別のシナリオは、私がさたざたなレデュヌサヌを抜出するこずに぀いお話しおいるのず同じロゞックです。たずえば、補品のリストずナヌザヌのリストがあり、それらのレデュヌサヌは次のようになりたす。

// reducers/products.js
const reducer = (state, { type, action}) => {
  switch (type) {
    case 'products/FETCH_SUCCESS':
      return {
        ...state,
        loading: false,
        list: payload
      }
    default:
      return state
  }
}
// reducers/users.js
const reducer = (state, { type, payload}) => {
  switch (type) {
    case 'users/FETCH_SUCCESS':
      return {
        ...state,
        loading: false,
        list: payload
      }
    default:
      return state
  }
}

ここでは、2぀のレデュヌサヌはほが同じなので、それを抜出しおリストレデュヌサヌを䜜成したす。

const list = (actionType) => {
  return (state, { type, payload }) => {
    switch (type) {
      case actionType:
        return {
          ...state,
          loading: false,
          list: payload
        }
        break;
      default:
        return state
    }
  }
}

次に、 composeReducersを実装しお、これら3぀のレデュヌサヌを組み合わせたす。

function composeReducers(...reducers) {
  return (state, action) => {
    if (reducers.length === 0) {
      return state
    }

    const last = reducers[reducers.length - 1]
    const rest = reducers.slice(0, -1)

    return rest.reduceRight((enhanced, reducer) => reducer(enhanced, action), last(state, action))
  }
}

このようにしお、補品リストずナヌザヌリストのレデュヌサヌは次のようになりたす。

// reducers/products.js
const reducer = (state, { type, payload}) => {
  // 其他逻蟑
}

export default composeReducer(reducer, list('products/FETCH_SUCCESS'))
// reducers/users.js
const reducer = (state, { type, payload}) => {
  // 其他逻蟑
}

export default composeReducer(reducer, list('users/FETCH_SUCCESS'))

リストは単なる䟋であり、実際、プロゞェクトには同じロゞックを持぀倚くのレデュヌサヌがありたす。

@yesmeck👍 、レデュヌサヌ゚ンハンサヌの圹割は以前は過小評䟡されおいたした。

@sorryccなぜあなたは蚀うこずができたすか dispatch比范で明瀺的に呌び出されたしたか

@ Tinker404モデルを個別に宣蚀する方が明確であり、远加ず削陀が簡単になるず思いたす。私はこれを曞きたす
app.modelrequire'../ models / a';
app.modelrequire'../ models / b';

たた、䞀床に耇数のモデルを枡すこずができる方法を提案したす。倧芏暡なプロゞェクトには倚くのモデルが含たれる堎合がありたす。珟圚、すべおのモデルをむンポヌトむンポヌトしおから、各モデルを1぀ず぀モデル化する必芁がありたす。これはあたり䟿利ではありたせん。珟圚の方法執筆の

// models是䞪文件倹有埈倚model
import models from './models';

models.forEach((m)=>{
    app.model(m);
});

// models.js
const context = require.context('./', false, /\.js$/);
const keys = context.keys().filter(item => item !== './index.js');
const models = [];
for (let i = 0; i < keys.length; i++) {
  models.push(context(keys[i]));
}
export default models;

ずおもD.VAです。

ナヌザヌダッシュボヌドでantdフォヌムコンポヌネントの䜿甚を芋぀けたしたが、玔粋なコンポヌネントには䜿甚できないこずを芚えおいたすが、今は可胜ですか

@codering制限があるこずを芚えおいたせんが、antdの問題はhttps://github.com/ant-design/ant-design/issuesで尋ねるこずができたす。

https://github.com/react-component/form/blob/master/README.md
泚に蚘茉されおいたす。

こんにちは、あなたのdvaを䜿甚したいず思いたす。珟圚、React Webpack Reduxスキャフォヌルディングによっお生成されたディレクトリ構造を䜿甚しおいたす。䟋のナヌザヌダッシュボヌドの䟋を参照しおコヌドを倉曎したしたが、開始埌に䜕もありたせん。私はそれがどこにあるかを芋぀けたすか䜕かがうたくいかなかった、私のプロゞェクトアドレス https //github.com/baiyulong/lenovo_parts

@baiyulongナヌザヌダッシュボヌドのディレクトリ構造に基づいお盎接実行しおみたせんか

@sorrycc珟圚、ナヌザヌダッシュボヌドのディレクトリ構造を䜿甚しおいたす。dvaルヌティングに特別な凊理や曞き蟌みはありたすか
export default function({ history }) {
return (
<Router history={history}>
<IndexRoute component={HomePage} />
<Route path='/' component={HomePage}>
<Route path='/create' component={CreateOrder} />
</Route>
</Router>
)
}
私が曞いたこのルヌト、ホヌムペヌゞはできたす、私は<Link to='/create'>Create</Link>リンクを曞きたした、それをクリックした埌にCreateOrderコンポヌネントに行くこずができたせん

@baiyulongdvaのルヌトを曞く特別な方法はありたせん。詊しおみおください。

  1. ゚ラヌはありたすか
  2. /createルヌトに盎接アクセスしおみおください

@nikoguどうもありがずう、入れ子になった埌は元気になりたす

こんにちは、dvaはモデルのホットロヌディングをサポヌトできたすか

@ kkkf1190はこれを怜蚎しおおり、サポヌトする予定です。

👍

ありがずうず蚀いたかっただけです。 。 。

vuejsのvue-cliの足堎はずおも良いずい぀も思っおいたしたが、これを読んだ埌、私の考え方は䞀倉したした。

ずおも玠敵なフレヌムしばらく研究しおきたした。 @sorryccYundaに2぀の質問をしたいず思いたす。

  1. dvaはreactnativeプロゞェクトで完党に䜿甚できたすか
  2. dva + reactjsはサヌバヌ偎のレンダリングをうたくサポヌトできたすか

@ freemember007

  1. react-nativeのサポヌト、参照䟋 https ://github.com/sorrycc/dva-example-react-native
  2. 理論的にはサヌバヌの動䜜に問題はありたせん。その背埌にあるreduxずreact-routerはどちらもSSRをサポヌトしおいたすが、関連するロゞックをたっすぐにしお適切にパッケヌゞ化する必芁があるため、dvaに適甚するには時間がかかりたす。

@sorrycc高階レデュヌサヌをサポヌトするための゜リュヌションはありたすか私たちのプロゞェクトは、再利甚のために倚くの高次レデュヌサヌを䜿甚しおいたす

@ancheelでサポヌトされおおり、グロヌバルたたはロヌカルにするこずができたす。ナヌスケヌスを参照しおください https //github.com/dvajs/dva/blob/master/test/reducers-test.js

モデルの状態を倉曎した埌、モデルを再床倉曎する方法、この問題は垞に発生したす
antd.js32924譊告setState...既存の状態遷移䞭 renderたたは別のコンポヌネントのコンストラクタヌ内などは曎新できたせん。Renderメ゜ッドは、propsずstate;コンストラクタヌの玔粋関数である必芁がありたす。副䜜甚はアンチパタヌンですが、 componentWillMountに移動できたす。

非垞に゚キサむティングです。本番環境で䜿甚しおみおください。匕き続き最適化ず改善を行っおください。

これを匱䜓化

よくやった。ありがずう

@sorryccサヌバヌサむドレンダリングのサポヌトを楜しみにしおいたす

@mountainmoonによっおサポヌトされおいたす。https //github.com/sorrycc/dva-boilerplate-isomorphicを参照しおください。

車茪の波が来たした+1

こんにちは、私はこのdvaの孊習に぀いお連絡を取りたした。数日間コヌドを読んだ埌、心の䞭でいく぀か質問がありたす。質問したいのですが。
あなたのデモはすべおシングルペヌゞアプリケヌションであるこずがわかりたしたが、それらはすべお開発䞭のマルチペヌゞアプリケヌションです。マルチペヌゞアプリケヌション開発でルヌティングが䜿甚されおいない堎合、代わりにコンポヌネントをロヌドする方法を尋ねたいず思いたす。銬鹿に尋ねる。ルヌティングを䜿甚しないため、少し混乱したす。そのため、モデルに蚭定されおいるリスナヌは、トリガヌする堎所が明確ではありたせん。
history.listenlocation => {
iflocation.pathname ==='/ users'{
急送{
タむプ'querySuccess'、
ペむロヌド{}
}
}
}
PSquerySuccessメ゜ッドでデヌタをロヌドし、export default connectmapStateToPropsUsers;を䜿甚するず、゚ラヌも報告されたす。
connect.js41 Uncaught TypeErrorクラスを関数ずしお呌び出すこずはできたせん
䞀瞬バカみたいな感じで、説明しおもらえるかわからない、ありがずう

なぜdva 英語でお願いしたす

私はこの曞き方が本圓に奜きではありたせん。

@coderingは、ナヌザヌダッシュボヌドでのantdフォヌムコンポヌネントの䜿甚に぀いお蚀及したしたが、玔粋なコンポヌネントには䜿甚できないこずを芚えおいたす。今は可胜ですか
私もこれに最も遭遇したした。玔粋関数コンポヌネントの堎合、getFieldDecorator関数はprops.form.getFieldDecoratorから取埗できたせん。extendsを䜿甚しおコンポヌネントを䜜成するず、取埗できたす。
神が解決策を持っおいるかどうかはわかりたせん@sorrycc

同じペヌゞを英語で立ち䞊げおいただけたせんか これを理解するこずはできたせん。なぜdvaが必芁なのですか。

こんにちは、倧芏暡なプロゞェクトの堎合、その状態は非垞に倧きく、凊理が非垞に面倒になりたす。耇数のモデルに分割する必芁がありたすか

@ yazhou-zyz私はあなたず同じ問題を抱えおいたす
譊告setState...既存の状態遷移䞭renderたたは別のコンポヌネントのコンストラクタヌ内などは曎新できたせん。renderメ゜ッドはpropsずstateの玔粋関数である必芁がありたす。コンストラクタヌの副䜜甚はアンチパタヌンですが、 componentWillMountに移動できたす。
どうやっお解決したのか聞いおみたすか

孊び

勉匷し続ける

dvaは、建蚭プロゞェクトにずっお非垞に参考になる䟡倀がありたす。

お疲れ様でした〜

英語のドキュメントはどこにありたすか 翻蚳゚ンゞンを䜿甚しおトピックを翻蚳するこずには問題があり、理解が十分ではありたせん。 英語で、あなたたちは䞖界に到達するこずができたす。 頑匵っおください!! ロケット

dvaはReact-native0.47.XおよびReact16.0.0バヌゞョンでは詊されたせん

@vecoldは、招埅コヌドや゚ラヌメッセヌゞは䜿甚できないず蚀っお、垞に䜿甚できたす。

ドキュメントの英語翻蚳を入手できる可胜性はありたすか
ありがずう

ビゞネスコヌドでは、このような䟋が䞀般的です。ロヌカル状態の曎新は党䜓に圱響を䞎える可胜性がありたす。再レンダリングする必芁のない倚くの堎所も再レンダリングされるため、ペヌゞのパフォヌマンスが倧幅に䜎䞋したす。この関数を远加しお、redux connectが䟝存しおいる状態を自動的に分析し、䞍芁なmapStateToPropsの蚈算を枛らしお再レンダリングするこずはできたすか👍

ずおも良い
しかし、単䞀のペヌゞを䜜成したい堎合は、すべおのペヌゞを䜜成したす

_非公匏翻蚳_

なぜDva

Reduxは良いです。 しかし、抂念が倚すぎお、レデュヌサヌ、サガ、アクションが分離されおいたす異なるファむルに分割されおいたす

  1. レデュヌサヌ、セヌゞ、アクションを頻繁に切り替える必芁がありたす
  2. ビゞネスモデルたたはドメむンモデルを敎理するのに䞍䟿。 exp。の堎合、すでにuser_listがあり、product_listが必芁な堎合は、ファむルのコピヌを耇補する必芁がありたす
  3. 䜐賀は曞くのが難しいです。 すべおのアクションに察しお、フォヌク->りォッチャヌ->ワヌカヌを䜜成する必芁がありたす。
  4. ゚ントリヌは退屈で耇雑です

Dvaずは䜕ですか

これは、既存のフレヌムワヌクredux + react-router + redux-saga ...のラむトラッパヌです。 新しい抂念は含たれおいたせん。 <100行のコヌド。 elmずchooに觊発されたした。

これはフレヌムワヌクであり、ラむブラリではありたせん。 Ember.jsず同様に、各郚分の蚘述方法を制限したす。 チヌムワヌクをより制埡しやすくなりたす。 Dvaは、reactずreact-domを陀くすべおの䟝存関係をpeerDependenciesずしおカプセル化したす

その実装は、可胜な限り新しい構文を導入したせん。 䟝存関係を再利甚したす。 たずえば、ルヌタヌの定矩は、react-routerのJSXずたったく同じです。

コア機胜はapp.modelです。 これは、reducer、initialState、action、sagaを完党にカプセル化したす。

app.model({
  namespace: 'products',
  state: {
    list: [],
    loading: false,
  },
  subscriptions: [
    function(dispatch) {
      dispatch({type: 'products/query'});
    },
  ],
  effects: {
    ['products/query']: function*() {
      yield call(delay(800));
      yield put({
        type: 'products/query/success',
        payload: ['ant-tool', 'roof'],
      });
    },
  },
  reducers: {
    ['products/query'](state) {
      return { ...state, loading: true, };
    },
    ['products/query/success'](state, { payload }) {
      return { ...state, loading: false, list: payload };
    },
  },
});

以前はsagas/products.js, reducers/products.js actions/products.jsを䜜成し、それらを切り替えおいたした。

キヌポむント

  • 名前空間 rootReducerオブゞェクト内のreducerのkey $
  • 状態 initialState reducer
  • サブスクリプションdomの準備ができたずきに実行される[email protected]の新しい抂念 FRPぞの別れ
  • 効果より簡単な賢人
  • レデュヌサヌ

䜿い方

䟋を芋る

ロヌドマップ

  • devtoolホットリロヌド
  • ルヌタヌの動的構成
  • Effectsはより倚くのsagaモデルをサポヌトしたす
  • 単䜓テスト
  • その他の䟋todolist、antd-initのナヌザヌ、人気のある補品

よくある質問

開発ツヌルはサポヌトしたすか

redux-devtool、csslivereloadず互換性がありたす。 ホットリロヌドにはさらに䜜業が必芁です

prod envに適しおいたすか

承知したした

redux + redux-sagaのすべおの機胜を含みたすか

はい

ブラりザの互換性

redux-sagaのためIE8はありたせん。 埌で、゚フェクトレむダヌの拡匵機胜ずしお芳察可胜なサンク、プロミスを適甚する堎合がありたす

同様にしおください

['products/query']: function*() {}
['products/query'](state) {}

構文は䜕ですか配列を関数名ずしお䜿甚できたすか

@clemTheDasher関数名は、JavaScriptで蚈算されたキヌ配列ではないにするこずができたす。 メ゜ッド定矩ぞのより詳现な参照|

var obj = {
  property( parameters
 ) {},
  *generator( parameters
 ) {},
  async property( parameters
 ) {},
  async* generator( parameters
 ) {},

  // with computed keys:
  [property]( parameters
 ) {},
  *[generator]( parameters
 ) {},
  async [property]( parameters
 ) {},

  // compare getter/setter syntax:
  get property() {},
  set property(value) {}
};

新芏参入者の報告、ここに来お、フロント゚ンドの知識を孊ぶために懞呜に働き続けたす

@clemTheDasherそれは蚈算されたプロパティです。

リンクhttps://github.com/dvajs/dva/tree/master/examples/count404はなぜですか

孊び

神を芋䞊げる

神に感謝したす、オヌプン゜ヌスに感謝したす

私はあなたたちから孊ぶこずを蚱されおいたせんか

私は孊びたした、私たちが䜿甚するためのそのような䟿利なフレヌムワヌクを持っおいるこずに感謝したす

githubのデモリンクの有効期限が切れおいたす。

@sorrycc dvaはサヌバヌ偎のレンダリングをサポヌトしおいたすか

レデュヌサヌは次のように曞くこずができたす

const reducer = (state, { type, payload }) => {
  switch (type) {
    case 'products/query':
      return { ...state, loading: true, };
    case 'products/query/success':
      return { ...state, loading: false, list: payload };
    default
      return state;
  }
}

app.model({
  reducer
})

これにより、いく぀かの高次の方法をレデュヌサヌに適甚するこずが可胜になりたす。

Reduxの蚘述スタむルは簡朔で、状態を倉曎するために必芁な行は1行だけですが、数行のコヌドが構文糖衣構文で䞀緒に蚘述されおいるようです。ただし、残りのステヌタスを次のストップに配信するには、 ...stateを䜿甚する必芁がありたす。そうしないず、ステヌタスが䞍完党になりたす。぀たり、reduceフェヌズ䞭に、誀っお曞き蟌たれるず、䞀郚の状態が倱われる可胜性がありたす。

いく぀かの点で、Vuexのアむデアは読みやすく、より自然です。このようなものを曞いおください正確ではありたせん。

const mutation = {
  ['products/query'](state) {
    state.loading = true
  },
  ['products/query/success'](state, payload) {
    state.loading = false
    state.list = payload
  }
}

コヌドに関しおは、同期的にどの状態を倉曎するかだけを気にしたす。 Vuexはたた、州の次の停車地ぞの配達のために倖偎の局を包む必芁がありたす。おそらく、配達前にいく぀かの防埡チェック掚枬も行われるか、フックが怍えられたす。

dvaの公匏りェブサむトのサンプルペヌゞが出お゚ラヌを報告できないかどうか私に尋ねおください、それはアップグレヌドですか

同様にしおください

['products/query']: function*() {}
['products/query'](state) {}

構文は䜕ですか配列を関数名ずしお䜿甚できたすか

ES6では、リテラルでオブゞェクト匏をオブゞェクトのプロパティ名ずしお定矩できたす。぀たり、匏を角かっこで囲みたす。
そのような

obj = {
  ['xxname']: 'what ever you defined',
  ['xxyy'](args) {
    ....
  }
}

質問がありたす。「products/query」はレデュヌサヌの呌び出しを凊理するために䜿甚され、文字列を介しお名前空間に関連付けられたす。埌で、プロゞェクトが倧きくなった堎合数癟のメ゜ッドなど。私の名前空間を倉曎する必芁がある堎合。 100のメ゜ッドを倉曎するには

@yesmeck👍 、レデュヌサヌ゚ンハンサヌの圹割は以前は過小評䟡されおいたした。

ここでサポヌトがあるかどうかわかりたせんか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡