React Dva プロジェクトはモデルを作成し、データ管理と関数呼び出しをデモンストレーションします。


この記事では、 Dva の Redux 部分であるModel の定義について話しましょう
。新しく作成した Dva プロジェクトを開き、Model 部分である src の下のモデルを確認します。ここでは、彼がケースを示しました
ここに画像の説明を挿入
。より多くのモジュールを管理するには、-redux を使用します。乱雑で面倒に見えます
が、これらすべてをモデルにまとめていることがわかり、
そのようなファイルを作成するだけで済みます。

このモデルの下に独自の product.js を作成し
ここに画像の説明を挿入
、次のようにコードを記述します。

export default {
    
    
    namespace: "product",
    state: {
    
    
        productList: [
            {
    
    
                name: "小猫猫"
            },
            {
    
    
                name: "小狗狗"
            }
        ]
    },
    reducers: {
    
    
        updatelist(state,action) {
    
    
            let stateClon = deepCopy(state);
            stateClon.productList.push(action.payload);
            return stateClon;
        }
    }
}

function deepCopy(obj) {
    
    
    let str = JSON.stringify(obj);
    let appobj = JSON.parse(str);
    return appobj;
}

ここでは、名前に相当する名前空間を記述する必要があります。その後、状態がデータになります。redux をマスターしている人には理解しやすいと思います。リデューサーは、データ操作の関数で記述されています。ここでは

使用される配列にデータを追加する updatelist。deepCopy は、
ディープ コピーを行うために使用するコピー状態です
。redux では、開発者が状態を直接操作することは推奨されないため、最初にコピーしてから処理し、返します。それは戻ってきます

次に、srcの下にあるindex.jsを確認し、Model部分にコメントされているコードを紐解く
ここに画像の説明を挿入
と、今回の例が導入されていることが分かりますので、
参照先のファイルを記述方法に従って直接、独自のproduct.jsに変更し
ここに画像の説明を挿入
、それでは、このデータを操作してみましょう

次のようにコードを記述するコンポーネントを見つけます。

import React from "react"
import {
    
     connect } from "dva";

class dom extends React.Component {
    
    
  constructor(props){
    
    
    super(props);
    this.state = {
    
    
    }
  }

  getProduct = () =>{
    
    
    console.log(this.props.productList);
  }

  render(){
    
    
    return (
      <div>
         <button onClick={
    
    this.getProduct} type="primary">获取</button>
      </div>
    )
  }
}
const mapStateToProps = (state) => {
    
    
  return {
    
    
    productList: state.product
  }
}
export default connect(mapStateToProps)(dom);

まずconnectを導入し、関数名を宣言します。ちなみに私はこれを直接mapStateToPropsと呼んでいます。パラメータstateを受け取り、state.productに等しいproductListを定義します。次の点は、のproductに対応します
。あなたの Model
なので、それに対応します。モデルが与えられ
、 connect を呼び出します。最初のパラメータはモデルを取得する関数で、2 番目のパラメータはコンポーネントのエンティティです。
この時点で、ボタンをクリックして、それを取得して、 this.props.productList のコンテンツを見てください。
ここに画像の説明を挿入
これが製品の状態のデータであることがわかります
ここに画像の説明を挿入
。それでは、ここでデータを読み取ります。まだ updatelist を呼び出して
、ボタンを追加する必要があります。

<button onClick={
    
    this.addProduct} type="primary">添加</button>

addProductメソッドの参照コードは次のとおりです。

addProduct = () => {
    
    
  this.props.dispatch({
    
    
    type: "product/updatelist",
    payload: {
    
    
      name: "新数据"
    }
  })
}

ここに画像の説明を挿入
ここでは this.props.dispatch と呼びます。 type はネームスペース名/メソッド名です。
ここに画像の説明を挿入
2 番目のパラメータはメソッドが受け取るアクションです。

コードを実行し
、最初にクリックして追加し、クリックして取得します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_45966674/article/details/131675148