dva是一款基于react和redux的輕量級框架,可以幫助我們更快速地開發react應用。在日常使用中,我們經常會遇到需要處理多級json數據的情況。本文將為大家介紹dva處理多級json數據的方法。
首先,我們需要在models文件夾下定義數據模型。假設我們的json數據如下:
{ "name": "Tom", "age": 18, "hobbies": { "sports": ["basketball", "football"], "music": ["piano", "guitar"] } }
我們可以定義如下的數據模型:
export default { namespace: 'example', state: { name: '', age: 0, hobbies: { sports: [], music: [] } }, reducers: { save(state, { payload }) { return { ...state, ...payload }; }, }, effects: { *fetch({ payload }, { call, put }) { const response = yield call(query, payload); yield put({ type: 'save', payload: response, }); }, }, };
在以上的模型中,我們定義了一個名為example的namespace, state中聲明了name、age和hobbies三個屬性。其中,hobbies又包含了sports和music兩個屬性,它們的值為一個空數組。
接下來,在我們的組件中可以通過以下方式調用我們的model:
import React from 'react'; import { connect } from 'dva'; const Example = ({ name, age, hobbies }) =>{ return ( <div> <p><b>name:</b> {name}</p> <p><b>age:</b> {age}</p> <p><b>sports:</b> {hobbies.sports.join(', ')}</p> <p><b>music:</b> {hobbies.music.join(', ')}</p> </div> ); }; export default connect(({ example }) =>example)(Example);
在以上代碼中,我們通過connect高階組件來獲取example模型中的數據,通過props傳遞給組件。
處理多級json數據,我們可以通過以上的方式來定義model,然后在組件中進行調用。此外,dva還提供了一些語法糖,使其更方便處理復雜的數據結構,比如immutability-helper和normalizr等。