目次
1. ライフ サイクル
VUE
コードを直接投稿しますが、この 2 つはまだ多少似ています
vue
:
vueに値
では、イベントをバインドするメソッドにパラメータを直接渡すことはできません。パラメータは、要素の data- 属性にバインドされた属性値として使用する必要があります。そして、
八、父子组件通信
如果父组件想要调用子组件的方法
ホームページ ウェブフロントエンド フロントエンドQ&A vue と WeChat ミニ プログラムの違いは何ですか?

vue と WeChat ミニ プログラムの違いは何ですか?

Jan 04, 2022 am 11:04 AM
vue WeChat アプレット

違い: 1. 「v-if」と「v-show」は要素の表示と非表示を制御するために vue で使用されますが、「wx-if」と「hidden」はミニ プログラムで使用されます。 2. vue 「v-on:event」を使用してイベントをバインドしますが、ミニ プログラムは「bindtap(bind event)」を使用してイベントをバインドします。

vue と WeChat ミニ プログラムの違いは何ですか?

このチュートリアルの動作環境: Windows7 システム、vue2.9.6 バージョン、DELL G3 コンピューター。

1. ライフ サイクル

最初に 2 つの写真を投稿します:

vue ライフ サイクル

ミニ プログラムのライフ サイクル

#これに比べて、ミニ プログラムのフック関数ははるかに単純です。

vue のフック関数は新しいページにジャンプするときにトリガーされますが、小プログラム のフック関数はページの別のジャンプ方法でトリガーされます。 . フックは同じではありません。

  • onLoad: ページの読み込み
    ページは 1 回だけ呼び出されます。onLoad# で現在のページを開くために呼び出される クエリを取得できます。 ## ### パラメーター。
  • onShow
  • : ページ表示は、ページが開かれるたびに呼び出されます。
  • onReady
  • : ページの最初のレンダリングが完了しましたページは 1 回だけ呼び出されます。これは、ページの準備ができており、ビュー レイヤーと対話できることを意味します。
    onReady
    の後に wx.setNavigationBarTitle などのインターフェース設定を設定してください。詳細については、「ライフ サイクル」を参照してください。
  • onHide
  • : ページ非表示 navigateTo
    または下部タブが切り替えられたときに呼び出されます。
  • onUnload
  • : ページのアンロード redirectTo
    または navigateBack のときに呼び出されます。
データ リクエスト

データをリクエストするためにページが読み込まれるとき、2 つのフックの使用方法は似ています。

vue

は通常は ## にあります。データは #created または mounted で要求されますが、miniprogram では、データは onLoad または onShow で要求されます。 2. データ バインディング

VUE

: Vue が、値が要素の属性である変数を動的にバインドするとき、変数の前にコロンを追加します。 , 例:

1

<img :src="imgSrc"/>

ログイン後にコピー
小プログラム

: 変数の値が要素の属性にバインドされている場合、変数の値は 2 つの中括弧で囲まれます。括弧がない場合は、文字列とみなされます。例:

1

<image src="{{imgSrc}}"></image>

ログイン後にコピー
3. リストのレンダリング

コードを直接投稿しますが、この 2 つはまだ多少似ています

vue:

1

2

3

4

5

6

7

8

9

10

11

<ul id="example-1">

  <li v-for="item in items">

    {{ item.message }}  </li></ul>var example1 = new Vue({

  el: '#example-1',

  data: {

    items: [

      { message: 'Foo' },

      { message: 'Bar' }

    ]

  }

})

ログイン後にコピー
ミニ プログラム:

1

2

3

4

5

6

7

8

Page({

  data: {

    items: [

      { message: 'Foo' },

      { message: 'Bar' }

    ]

  }

})<text wx:for="{{items}}">{{item}}</text>

ログイン後にコピー
4. 要素の表示と非表示

vue

を使用します。

v-ifv-show は要素の表示と非表示を制御します アプレット

では、

wx-if## を使用します# andhidden要素の表示と非表示を制御します5. イベント処理

vue

:

v-on:event# を使用します## イベントをバインドするか、

@event を使用してイベントをバインドします。例:

1

2

<button v-on:click="counter += 1">Add 1</button>

<button v-on:click.stop="counter+=1">Add1</button>  //阻止事件冒泡

ログイン後にコピー
アプレットでは、bindtap(bind event) を使用します。

、または

catchtap(catch イベント)バインディング イベント (例:

1

2

<button bindtap="noWork">明天不上班</button>

<button catchtap="noWork">明天不上班</button>  //阻止事件冒泡

ログイン後にコピー
6)。双方向データ バインディング

1. 設定

vueに値

がある場合、form要素に

v-model

を追加するだけです。 data の対応する値をバインドすると、フォーム要素の内容が変更されると、それに応じて data の対応する値も変更されます。これは の非常に優れた点です。ビュー<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&amp;lt;div id=&amp;quot;app&amp;quot;&amp;gt; &amp;lt;input v-model=&amp;quot;reason&amp;quot; placeholder=&amp;quot;填写理由&amp;quot; class=&amp;#39;reason&amp;#39;/&amp;gt; &amp;lt;/div&amp;gt; new Vue({ el: &amp;#39;#app&amp;#39;, data: { reason:&amp;#39;&amp;#39; } })</pre><div class="contentsignin">ログイン後にコピー</div></div>しかし、小プログラムには、そのような機能はありません。それではどうすればいいでしょうか? フォームのコンテンツが変更されると、フォーム要素にバインドされたメソッドがトリガーされ、このメソッドで、フォーム上の値が this.setData({key:value}) を通じて割り当てられます。

data に対応する値を指定します。 次のコードは、それがわかると思います:

1

2

3

4

5

6

7

8

9

10

11

12

&lt;input bindinput=&quot;bindReason&quot; placeholder=&quot;填写理由&quot; class=&#39;reason&#39; value=&#39;{{reason}}&#39; name=&quot;reason&quot; /&gt;

 

Page({

data:{

    reason:&#39;&#39;

},

bindReason(e) {

    this.setData({

      reason: e.detail.value

    })

  }

})

ログイン後にコピー
ページ上に多くのフォーム要素がある場合、値を変更するのは物理的な作業です。 smallprogram と比較すると、vue

v-model

はとてもクールです。 #2. 値 vue

で、

this.reason を使用して値 ## を取得します。

#アプレット

で、this.data.reasonを渡して値

7を取得します。イベントパラメータをバインドして

#を渡します。 ##invue では、イベント パラメーターのバインドは非常に簡単です。必要なのは、イベントをトリガーするメソッドで仮パラメーターとして渡されるデータを渡すことだけです (例:

1

2

3

4

5

6

7

8

9

10

&lt;button @click=&quot;say(&#39;明天不上班&#39;)&quot;&gt;&lt;/button&gt;

 

new Vue({

  el: &#39;#app&#39;,

  methods:{

    say(arg){

    consloe.log(arg)

    }

  }

})

ログイン後にコピー
##)。 #In

アプレット

では、イベントをバインドするメソッドにパラメータを直接渡すことはできません。パラメータは、要素の data- 属性にバインドされた属性値として使用する必要があります。そして、

e.currentTarget.dataset.*

で取得したメソッドで、パラメータの転送を完了します。非常に面倒です。何か...はありますか?<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&amp;lt;view class=&amp;#39;tr&amp;#39; bindtap=&amp;#39;toApprove&amp;#39; data-id=&amp;quot;{{item.id}}&amp;quot;&amp;gt;&amp;lt;/view&amp;gt; Page({ data:{ reason:&amp;#39;&amp;#39; }, toApprove(e) { let id = e.currentTarget.dataset.id; } })</pre><div class="contentsignin">ログイン後にコピー</div></div><h2 id="strong-八-父子组件通信-strong"><strong>八、父子组件通信</strong></h2><p><strong><span style="font-size: 16px;">1.子组件的使用</span></strong></p><p>在<code>vue中,需要:

  • 编写子组件

  • 在需要使用的父组件中通过import引入

  • vuecomponents中注册

  • 在模板中使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

//子组件 bar.vue

&lt;template&gt;

  &lt;div class=&quot;search-box&quot;&gt;

    &lt;div @click=&quot;say&quot; :title=&quot;title&quot; class=&quot;icon-dismiss&quot;&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/template&gt;

&lt;script&gt;

export default{

props:{

    title:{

       type:String,

       default:&#39;&#39;

      }

    }

},

methods:{

    say(){

       console.log(&#39;明天不上班&#39;);

       this.$emit(&#39;helloWorld&#39;)

    }

}

&lt;/script&gt;

 

// 父组件 foo.vue

&lt;template&gt;

  &lt;div class=&quot;container&quot;&gt;

    &lt;bar :title=&quot;title&quot; @helloWorld=&quot;helloWorld&quot;&gt;&lt;/bar&gt;

  &lt;/div&gt;

&lt;/template&gt;

 

&lt;script&gt;

import Bar from &#39;./bar.vue&#39;

export default{

data:{

    title:&quot;我是标题&quot;

},

methods:{

    helloWorld(){

        console.log(&#39;我接收到子组件传递的事件了&#39;)

    }

},

components:{

    Bar

}

&lt;/script&gt;

ログイン後にコピー

小程序中,需要:

  • 编写子组件

  • 在子组件的json文件中,将该文件声明为组件

    1

    2

    3

    {

      &quot;component&quot;: true

    }

    ログイン後にコピー
  • 在需要引入的父组件的json文件中,在usingComponents填写引入组件的组件名以及路径

    1

    2

    3

    &quot;usingComponents&quot;: {

        &quot;tab-bar&quot;: &quot;../../components/tabBar/tabBar&quot;

      }

    ログイン後にコピー
  • 在父组件中,直接引入即可

    1

    &lt;tab-bar currentpage=&quot;index&quot;&gt;&lt;/tab-bar&gt;

    ログイン後にコピー

    具体代码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    // 子组件

    &lt;!--components/tabBar/tabBar.wxml--&gt;

    &lt;view class=&#39;tabbar-wrapper&#39;&gt;

      &lt;view class=&#39;left-bar {{currentpage===&quot;index&quot;?&quot;active&quot;:&quot;&quot;}}&#39; bindtap=&#39;jumpToIndex&#39;&gt;

        &lt;text class=&#39;iconfont icon-shouye&#39;&gt;&lt;/text&gt;

        &lt;view&gt;首页&lt;/view&gt;

      &lt;/view&gt;

      &lt;view class=&#39;right-bar {{currentpage===&quot;setting&quot;?&quot;active&quot;:&quot;&quot;}}&#39; bindtap=&#39;jumpToSetting&#39;&gt;

        &lt;text class=&#39;iconfont icon-shezhi&#39;&gt;&lt;/text&gt;

        &lt;view&gt;设置&lt;/view&gt;

      &lt;/view&gt;

    &lt;/view&gt;

    ログイン後にコピー

2.父子组件间通信

vue

父组件向子组件传递数据,只需要在子组件通过v-bind传入一个值,在子组件中,通过props接收,即可完成数据的传递,示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

// 父组件 foo.vue

&lt;template&gt;

  &lt;div class=&quot;container&quot;&gt;

    &lt;bar :title=&quot;title&quot;&gt;&lt;/bar&gt;

  &lt;/div&gt;

&lt;/template&gt;

&lt;script&gt;

import Bar from &#39;./bar.vue&#39;

export default{

data:{

    title:&quot;我是标题&quot;

},

components:{

    Bar

}

&lt;/script&gt;

 

// 子组件bar.vue

&lt;template&gt;

  &lt;div class=&quot;search-box&quot;&gt;

    &lt;div :title=&quot;title&quot; &gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/template&gt;

&lt;script&gt;

export default{

props:{

    title:{

       type:String,

       default:&#39;&#39;

      }

    }

}

&lt;/script&gt;

ログイン後にコピー

子组件和父组件通信可以通过this.$emit将方法和数据传递给父组件。

小程序

父组件向子组件通信和vue类似,但是小程序没有通过v-bind,而是直接将值赋值给一个变量,如下:

1

2

&lt;tab-bar currentpage=&quot;index&quot;&gt;&lt;/tab-bar&gt;

此处, “index”就是要向子组件传递的值

ログイン後にコピー

在子组件properties中,接收传递的值

1

2

3

4

5

6

7

properties: {

    // 弹窗标题

    currentpage: {            // 属性名

      type: String,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)

      value: &#39;index&#39;     // 属性初始值(可选),如果未指定则会根据类型选择一个

    }

  }

ログイン後にコピー

子组件向父组件通信和vue也很类似,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//子组件中

methods: {  

    // 传递给父组件

    cancelBut: function (e) {

      var that = this;

      var myEventDetail = { pickerShow: false, type: &#39;cancel&#39; } // detail对象,提供给事件监听函数

      this.triggerEvent(&#39;myevent&#39;, myEventDetail) //myevent自定义名称事件,父组件中使用

    },

}

 

//父组件中

&lt;bar bind:myevent=&quot;toggleToast&quot;&gt;&lt;/bar&gt;

 

// 获取子组件信息

toggleToast(e){

    console.log(e.detail)

}

ログイン後にコピー

如果父组件想要调用子组件的方法

vue会给子组件添加一个ref属性,通过this.$refs.ref的值便可以获取到该子组件,然后便可以调用子组件中的任意方法,例如:

1

2

3

4

5

//子组件

&lt;bar ref=&quot;bar&quot;&gt;&lt;/bar&gt;

 

//父组件

this.$ref.bar.子组件的方法

ログイン後にコピー

小程序是给子组件添加id或者class,然后通过this.selectComponent找到子组件,然后再调用子组件的方法,示例:

1

2

3

4

5

//子组件

&lt;bar id=&quot;bar&quot;&gt;&lt;/bar&gt;

 

// 父组件

this.selectComponent(&#39;#id&#39;).syaHello()

ログイン後にコピー

【相关推荐:《vue.js教程》】

以上がvue と WeChat ミニ プログラムの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vueでechartを使用する方法 vueでechartを使用する方法 May 09, 2024 pm 04:24 PM

vueでechartを使用する方法

vue におけるエクスポートのデフォルトの役割 vue におけるエクスポートのデフォルトの役割 May 09, 2024 pm 06:48 PM

vue におけるエクスポートのデフォルトの役割

vueでのmap関数の使い方 vueでのmap関数の使い方 May 09, 2024 pm 06:54 PM

vueでのmap関数の使い方

vueのeventと$eventの違い vueのeventと$eventの違い May 08, 2024 pm 04:42 PM

vueのeventと$eventの違い

vueのエクスポートとデフォルトのエクスポートの違い vueのエクスポートとデフォルトのエクスポートの違い May 08, 2024 pm 05:27 PM

vueのエクスポートとデフォルトのエクスポートの違い

Vue における onmounted の役割 Vue における onmounted の役割 May 09, 2024 pm 02:51 PM

Vue における onmounted の役割

vue の onmounted は、react のどのライフサイクルに対応しますか vue の onmounted は、react のどのライフサイクルに対応しますか May 09, 2024 pm 01:42 PM

vue の onmounted は、react のどのライフサイクルに対応しますか

Vueのフックとは何ですか Vueのフックとは何ですか May 09, 2024 pm 06:33 PM

Vueのフックとは何ですか

See all articles