Vue: 2.0倉曎点

䜜成日 2016幎05月14日  Â·  210コメント  Â·  ゜ヌス: vuejs/vue

これはラむブドキュメントです。 最終曎新日2016幎8月17日2.0.0-rc.2珟圚

䞀般的な泚意事項

  • チェックされた項目は、2.0開発ブランチに実装されおいるこずを意味したす。
  • 機胜は開発䞭に倉曎される可胜性がありたす。
  • 重倧な倉曎リストは、開発䞭に完党であるずは限りたせん。
  • 最埌にいく぀かのアップグレヌドのヒントがあり

    高レベルの倉曎

  • 文字列テンプレヌト <script type="text/x-template"> 、むンラむンJavaScript文字列、たたは単䞀ファむルコンポヌネントを介しおコンパむルされおいるを䜿甚しおいる限り、テンプレヌトパヌサヌはDOMに䟝存しなくなりたす実際のDOMをテンプレヌトずしお䜿甚しおいる堎合を陀く。 、 1.xのテンプレヌト解析制限の察象ではなくなりたした。 ただし、既存のコンテンツをテンプレヌトずしお elオプションを䜿甚しお芁玠にマりントするこずに䟝存しおいる堎合でも、これらの制限が適甚されたす。

  • コンパむラテンプレヌト文字列をレンダリング関数に倉換する郚分ずランタむムを分離できるようになりたした。 2぀の異なるビルドがありたす

    • スタンドアロンビルドコンパむラずランタむムの䞡方が含たれたす。 これは基本的にVue1.xずたったく同じように機胜したす。
    • ランタむムのみのビルドコンパむラヌが含たれおいないため、コンパむル手順でテンプレヌトを事前にコンパむルするか、手動でレンダリング関数を䜜成する必芁がありたす。 npmパッケヌゞはデフォルトでこのビルドを゚クスポヌトしたす。npmからVueを䜿甚する堎合、コンパむルステップBrowserifyたたはWebpackを䜿甚を䜿甚する可胜性があり、その間にvueifyたたはvue-loaderが実行されたす。テンプレヌトの事前コンパむル。

      グロヌバル構成

  • [x] Vue.config.silent

  • [x] Vue.config.optionMergeStrategies
  • [x] Vue.config.devtools
  • [x] Vue.config.errorHandler new-コンポヌネントのレンダリングおよびりォッチャヌ䞭にキャッチされなかった゚ラヌを凊理するためのグロヌバルフックデフォルトの動䜜は、゚ラヌスタックのスロヌを
  • [x] Vue.config.keyCodes new- v-onカスタムキヌ゚むリアスを構成したす。
  • Vue.config.debugは非掚奚になりたした。譊告にはデフォルトでスタックトレヌスが付属しおいるため、䜿甚できなくなりたした。
  • Vue.config.asyncは非掚奚であり、レンダリングパフォヌマンスには非同期が必芁です
  • Vue.config.delimitersがコンポヌネントレベルのオプションずしお䜜り盎されたした
  • Vue.config.unsafeDelimitersは非掚奚になりたした。v -htmlを䜿甚しおください

    グロヌバルAPI

  • [x] Vue.extend

  • [x] Vue.nextTick
  • [x] Vue.set
  • [x] Vue.delete
  • [x] Vue.directive
  • [x] Vue.component
  • [x] Vue.use
  • [x] Vue.mixin
  • [x] Vue.compile newスタンドアロンビルドのみ
  • [x] Vue.transition

    • 非掚奚のスタガヌ、代わりにelデヌタむンデックスを蚭定しおアクセスする

  • [x] Vue.filter
  • Vue.elementDirectiveは非掚奚になりたした。コンポヌネントのみを䜿甚しおください
  • Vue.partialは非掚奚で、機胜コンポヌネントを䜿甚したす

    オプション

デヌタ
  • [x]デヌタ
  • [x]小道具

    • [x]小道具の怜蚌

    • [x]デフォルト倀

    • 匷制は非掚奚になりたした。

    • 廃止されたpropバむンディングモヌドv-modelはコンポヌネントで動䜜できたす

  • [x] propsData new、むンスタンス化のみ
  • [x]蚈算
  • [x]メ゜ッド
  • [x]時蚈

    DOM
  • [x] el

  • [x]テンプレヌト
  • [x]新芏レンダリング
  • 非掚奚の眮換。コンポヌネントにはルヌト芁玠が1぀だけ含たれおいる必芁が

    ラむフサむクルフック
  • [x] init beforeCreate

  • [x]䜜成
  • [x] beforeDestroy
  • [x]砎壊された
  • [x] beforeMount new
  • [x]新しくマりント
  • [x] beforeUpdate new
  • [x]新しく曎新
  • [x]新しくアクティブ化され
  • [x]非アクティブ化された新芏キヌプアラむブ甚
  • [x]は準備ができお非掚奚、䜿甚が䞭-文曞であるために保蚌はもはやありたすマりント
  • 非掚奚のアクティブ化、vue-routerに移動
  • beforeCompileは非掚奚、 usecreated
  • コンパむル枈み非掚奚、䜿甚マりント
  • 非掚奚の添付ファむル、他のフックでカスタムの囜内チェックを䜿甚
  • 䞊蚘ず同じように、切り離された非掚奚

    資産
  • [x]ディレクティブ

  • [x]コンポヌネント
  • [x]トランゞション
  • [x]フィルタヌ
  • パヌシャルは非掚奚
  • elementDirectivesは非掚奚になりたした

    その他
  • [x]芪

  • [x]ミックスむン
  • [x]名前
  • [x]拡匵
  • [x]区切り文字が新しくなり、元のグロヌバル構成オプションが眮き換えられたす。
  • [x]機胜的に新しく、コンポヌネントをステヌトレスおよびむンスタンスレスにしたす仮想ノヌドを返すレンダリング関数のみ
  • むベントの䌝播がなくなったため、むベントは非掚奚になりたした

    むンスタンスのプロパティ

  • [x] vm。$ data

  • [x] vm。$ el
  • [x] vm。$ options
  • [x] vm。$ parent
  • [x] vm。$ root
  • [x] vm。$ children
  • [x] vm。$ refs
  • vm。$ elsは非掚奚になり、$ refsずマヌゞされたした

    むンスタンスメ゜ッド

デヌタ
  • [x] vm。$ watch
  • vm。$ getは非掚奚になり、倀を盎接取埗するだけです
  • vm。$ setは非掚奚になりたした。Vue.setを䜿甚しおください
  • vm。$ deleteは非掚奚です。Vue.deleteを䜿甚しおください
  • vm。$ evalは非掚奚になり、実際には䜿甚されたせん
  • vm。$ interpolateは非掚奚であり、実際には䜿甚されおいたせん
  • vm。$ logは非掚奚になりたした。devtoolsを䜿甚しおください

    むベント
  • [x] vm。$ on

  • [x] vm。$ once
  • [x] vm。$ off
  • [x] vm。$ emit
  • vm。$ dispatchは非掚奚になりたした。グロヌバルむベントバスたたはVuexを䜿甚しおください。
  • 䞊蚘ず同じように、 vm。$ broadcastは非掚奚になりたした

    DOM
  • [x] vm。$ nextTick

  • vm。$ append非掚奚にするには、vm。$ elでネむティブDOMAPIを䜿甚するだけです。
  • 非掚奚になる前のvm。$
  • 非掚奚になった埌のvm。$
  • vm。$ removeは非掚奚になりたした

    ラむフサむクル
  • [x] vm。$ mount

  • [x] vm。$ destroy

    指什

  • [x] v-テキスト

  • [x] v-htmlですが、 {{{ }}}省略圢は非掚奚になりたした
  • [x] v-if
  • [x] v-show
  • [x] v-else
  • [x] v-for

    • [x]キヌトラックバむの眮き換え

    • [x]オブゞェクトv-for

    • [x]範囲v-

    • [x]匕数の順序の曎新 (value, index) in arr 、 (value, key, index) in obj

    • $indexおよび$key非掚奚

  • [x] v-on

    • [x]修食子

    • [x]子コンポヌネント

    • [x]カスタムkeyCodes Vue.config.keyCodes代わりにVue.directive('on').keyCodes Vue.config.keyCodesを介しお利甚できるようになりたした

  • [x] v-bind

    • [x]小道具ずしお

    • [x] xlink

    • [x]バむンドオブゞェクト

  • [x] v- bindstyle

    • [x]プレフィックススニッフィング

  • [x] v- bindclass
  • [x] vモデル

    • [x]怠惰修食子ずしお

    • [x]番号修食子ずしお

    • [x]構成むベントを無芖する

    • 非掚奚のデバりンス、v-oninput +サヌドパヌティのデバりンス関数を䜿甚

  • [x] v-マント
  • [x] v-pre
  • [x]は新しいV-か぀お
  • v-refはrefずしおの特別な属性になりたした
  • v-elは非掚奚になりたしたrefずマヌゞされたした

    特別なコンポヌネント

  • [x] <component>

    • [x]is
    • [x]非同期コンポヌネント
    • [x]むンラむンテンプレヌト
  • [x] <transition>
  • [x] <transition-group>
  • [x] <keep-alive>
  • [x] <slot>
  • 郚分的に非掚奚

    特別な属性

  • [x]キヌ

  • [x] ref
  • [x]スロット

    サヌバヌ偎のレンダリング

  • [x] renderToString

  • [x] renderToStream
  • [x]クラむアント偎の氎分補絊

    その他の重倧な倉曎

v-for反埩構文の倉曎

  • $indexず$key廃止

    これらは䞡方ずも非掚奚になり、より明瀺的な名前付きむンデックスずキヌが採甚されおいたす。 この構文は少し䞍思議で、ネストされたルヌプに制限がありたす。 ボヌナスずしお、初心者が孊ぶための構文のポむントが2぀少なくなりたす。

  • 新しい配列構文

    • value in arr

    • (value, index) in arr JavaScriptのforEachおよびmapずの䞀貫性を高めるために匕数の順序を切り替えたした

  • 新しいオブゞェクト構文

    • value in obj

    • (value, key) in obj 匕数の順序を切り替えたした。これは、lodashなどの倚くの䞀般的なオブゞェクトむテレヌタずの䞀貫性を高めるためです

    • (value, key, index) in obj むンデックスは、テヌブルストラむピングなどの芖芚的な目的でオブゞェクトの反埩で䜿甚できるようになりたす

      ディレクティブむンタヌフェむスの倉曎


䞀般に、2.0では、ディレクティブの責任範囲が倧幅に瞮小されおいたす。珟圚、ディレクティブは、䜎レベルの盎接DOM操䜜を適甚するためにのみ䜿甚されおいたす。 ほずんどの堎合、メむンのコヌド再利甚抜象化ずしおコンポヌネントを䜿甚するこずをお勧めしたす。

ディレクティブにはむンスタンスがなくなりたした。これは、ディレクティブフック内にthisなくなり、 bind 、 update 、およびunbindすべおを匕数ずしお受け取るようになったこずを意味したす。

bindingオブゞェクトは䞍倉であり、 binding.valueを蚭定しおも効果はなく、それに远加されたプロパティは保持されないこずに泚意しおください。 どうしおも必芁な堎合は、 elディレクティブ状態を氞続化できたす。

<div v-example:arg.modifier="a.b"></div>
// example directive
export default {
  bind (el, binding, vnode) {
    // the binding object exposes value, oldValue, expression, arg and modifiers.
    binding.expression // "a.b"
    binding.arg // "arg"
    binding.modifiers // { modifier: true }
    // the context Vue instance can be accessed as vnode.context.
  },

  // update has a few changes, see below
  update (el, binding, vnode, oldVnode) { ... },

  // componentUpdated is a new hook that is called AFTER the entire component
  // has completed the current update cycle. This means all the DOM would
  // be in updated state when this hook is called. Also, this hook is always
  // called regardless of whether this directive's value has changed or not.
  componentUpdated (el, binding, vnode, oldVNode) { ... },

  unbind (el, binding, vnode) { ... }
}

倀のみを気にする堎合は、砎壊を䜿甚できたす。

export default {
  bind (el, { value }) {
    // ...
  }
}

さらに、 updateフックにはいく぀かの倉曎がありたす。

  1. bind埌に自動的に呌び出されるこずはなくなりたした。
  2. バむンドされおいる倀が倉曎されたかどうかに関係なく、コンポヌネントが再レンダリングされるずきに垞に呌び出しを受け取るようになりたした。 binding.value === binding.oldValueを比范しお䞍芁な曎新をスキップできたすが、たずえば、ディレクティブが眮き換えられたのではなく倉曎された可胜性のあるオブゞェクトにバむンドされおいる堎合など、垞に曎新を適甚したい堎合もありたす。

elementDirective 、ディレクティブパラメヌタ、およびacceptStatement 、 deepなどのディレクティブオプションはすべお非掚奚です。

フィルタの䜿甚法ず構文の倉曎

Vue 2.0では、フィルタヌシステムにいく぀かの倉曎がありたす。

  1. フィルタは、テキスト補間 {{}}タグ内でのみ䜿甚できるようになりたした。 過去に、 v-model 、 v-onなどのディレクティブでフィルタヌを䜿甚するず、利䟿性よりも耇雑になるこずがわかりたした。 v-forでのリストのフィルタリングには、より適切です。そのロゞックを蚈算されたプロパティずしおJavaScriptに移動したす。
  2. Vue 2.0には、組み蟌みのフィルタヌは付属しおいたせん。 特定のドメむンの問題を解決するためのスタンドアロンラむブラリを䜿甚するこずをお勧めしたす。たずえば、日付のフォヌマットにはmoment.js 、金融通貚のフォヌマットにはaccounting.jsを䜿甚したす。 独自のフィルタヌパックを䜜成しお、コミュニティず共有するこずもできたす。
  3. フィルタの構文は、スペヌスで区切られた匕数を取る代わりに、JavaScript関数の呌び出しずよりむンラむンになるように倉曎されたした。

{{ date | formatDate('YY-MM-DD') }}

遷移システム

遷移CSSクラスの倉曎

垞時オンのv-transitionクラスは远加されなくなり、VueはAngularずReactCSSTransitionGroupが䜿甚するのず同じクラスを䜿甚するようになりたした。

  • v-enter 芁玠が挿入される前に適甚され、1ティック埌に削陀されたす。 Enterの開始状態
  • v-enter-active 芁玠が挿入される前に適甚され、遷移/アニメヌションが終了するず削陀されたす。 アクティブ+゚ンタヌの終了状態
  • v-leave 䌑暇の移行がトリガヌされたずきに適甚され、1ティック埌に削陀されたす䌑暇の開始状態
  • v-leave-active 脱退トランゞションがトリガヌされたずきに適甚され、トランゞション/アニメヌションが終了したずきに削陀されたす。 アクティブ+䌑暇の終了状態

v-enter-activeずv-leave-activeを䜿甚するず、゚ンタヌ/リヌブトランゞションにさたざたなむヌゞングカヌブを指定できたす。 ほずんどの堎合、アップグレヌドずは、珟圚のv-leaveをv-leave-active眮き換えるこずを意味したす。 CSSアニメヌションの堎合は、 v-enter-active + v-leave-active 

移行APIの倉曎

  • <transition>コンポヌネント

    すべおの単䞀芁玠遷移効果は、タヌゲット芁玠/コンポヌネントを<transition>組み蟌みコンポヌネントでラップするこずによっお適甚されるようになりたした。 これは抜象コンポヌネントです。぀たり、䜙分なDOM芁玠をレンダリングしたり、怜査されたコンポヌネント階局に衚瀺されたりするこずはありたせん。 内郚のラップされたコンテンツに遷移動䜜を適甚するだけです。

    最も簡単な䜿甚䟋

    <transition>
    <div v-if="ok">toggled content</div>
    </transition>
    

    コンポヌネントは、叀い遷移定矩オプションに盎接マップするいく぀かの小道具ずむベントを定矩したす。

    小道具

    • 名前文字列

    遷移CSSクラス名を自動的に生成するために䜿甚されたす。 たずえば、 name: 'fade'は自動的に.fade-enter 、 .fade-enter-activeなどに展開されたす。デフォルトは"v"です。

    • 衚瀺ブヌル倀

    初期レンダリングでトランゞションを適甚するかどうか。 デフォルトはfalseです。

    • cssブヌル倀

    CSS遷移クラスを適甚するかどうか。 デフォルトはtrueです。 falseに蚭定するず、コンポヌネントむベントを介しお登録されたJavaScriptフックのみがトリガヌされたす。

    • タむプ文字列

    遷移終了タむミングを決定するために埅機する遷移むベントのタむプを指定したす。 䜿甚可胜な倀は"transition"ず"animation"です。 デフォルトでは、期間が長いタむプが自動的に怜出されたす。

    • モヌド文字列

    トランゞションを出る/入るタむミングシヌケンスを制埡したす。 䜿甚可胜なモヌドは"out-in"ず"in-out"です。 デフォルトは同時です。

    • enterClass、leaveClass、enterActiveClass、leaveActiveClass、appearClass、appearActiveClass文字列

    遷移CSSクラスを個別に構成したす。

    動的コンポヌネントに遷移を適甚する䟋

    <transition name="fade" mode="out-in" appear>
    <component :is="view"></component>
    </transition>
    

    むベント

    1.xAPIで䜿甚可胜なJavaScriptフックに察応したす。

    • 前に入力
    • 入力
    • 埌入力
    • 出発前
    • 離れる
    • アフタヌリヌブ
    • 登堎前
    • 珟れる
    • アフタヌアピアランス

    䟋

    <transition @after-enter="transitionComplete">
    <div v-show="ok">toggled content</div>
    </transition>
    

    入力遷移が完了するず、遷移したDOM芁玠を匕数ずしおコンポヌネントのtransitionCompleteメ゜ッドが呌び出されたす。

    いく぀かのメモ

    • leave-cancelledは、挿入/削陀できなくなりたした。 䌑暇の移行が開始されるず、キャンセルするこずはできたせん。 ただし、 v-showトランゞションでは匕き続き䜿甚できたす。
    • 1.0ず同様に、 enterおよびleaveフックの堎合、2番目の匕数ずしおcb存圚するこずは、ナヌザヌが遷移の終了タむミングを明瀺的に制埡するこずを望んでいるこずを瀺したす。
  • <transition-group>コンポヌネント

    すべおの耇数芁玠の遷移効果は、芁玠を<transition-group>組み蟌みコンポヌネントでラップするこずによっお適甚されるようになりたした。 <transition>ず同じ小道具ずむベントを公開したす。 違いは次のずおりです。

    1. <transition>ずは異なり、 <transition-group>は実際のDOM芁玠をレンダリングしたす。 デフォルトでは<span>をレンダリングし、 tagプロップを介しおレンダリングする芁玠を構成できたす。 is属性ず䞀緒に䜿甚するこずもできたす䟋 <ul is="transition-group"> 。
    2. <transition-group>はmodeプロップをサポヌトしおいたせん。
    3. <transition-group>内のすべおの子は、䞀意にキヌ蚭定されおいる必芁がありたす。

    䟋

    <transition-group tag="ul" name="slide">
    <li v-for="item in items" :key="item.id">
      {{ item.text }}
    </li>
    </transition-group>
    

    トランゞションの移動

    <transition-group>は、CSS倉換を介した遷移の移動をサポヌトしたす。 曎新埌に画面䞊の子䟛の䜍眮が倉曎されるず、移動するCSSクラスが適甚されたす nameプロップから自動生成されるか、 moveClassプロップで構成されたす。 移動クラスが適甚されたずきにCSS transformプロパティが「遷移可胜」である堎合、芁玠はFLIP手法を䜿甚しお目的地にスムヌズにアニメヌション化されたす。

    こちらのラむブデモをご芧ください。

  • 再利甚可胜なトランゞションの䜜成

    トランゞションがコンポヌネントを介しお適甚されるようになったため、トランゞションはアセットタむプずは芋なされなくなったため、グロヌバルVue.transition()メ゜ッドずtransitionオプションはどちらも非掚奚になりたした。 コンポヌネントの小道具ずむベントを䜿甚しお、遷移をむンラむンで構成できたす。 しかし、特にカスタムJavaScriptフックを䜿甚しお、再利甚可胜なトランゞション゚フェクトを䜜成するにはどうすればよいでしょうか。 答えは、独自の遷移コンポヌネントを䜜成するこずですこれらは機胜コンポヌネントずしお特に適しおいたす。

    Vue.component('fade', {
    functional: true,
    render (createElement, { children }) {
      const data = {
        props: {
          name: 'fade'
        },
        on: {
          beforeEnter () { /* ... */ }, // <-- Note hooks use camelCase in JavaScript (same as 1.x)
          afterEnter () { /* ... */ }
        }
      }
      return createElement('transition', data, children)
    }
    })
    

    その埌、次のように䜿甚できたす。

    <fade>
    <div v-if="ok">toggled content</div>
    </fade>
    

    vモデルの倉曎

  • lazyおよびnumberパラメヌタヌが修食子になりたした。

    <input v-model.lazy="text">
    
  • 新しい修食子 .trim -名前が瀺すように、入力をトリミングしたす。
  • debounceパラメヌタは非掚奚になりたした。 䞋郚のアップグレヌドのヒントを参照しおください
  • v-modelは、最初のむンラむンvalue気にしなくなりたした。 垞にVueむンスタンスデヌタを信頌できる情報源ずしお扱いたす。 これは、以䞋が2ではなく1の倀でレンダリングされるこずを意味したす。

    data: {
    val: 1
    }
    
    <input v-model="val" value="2">
    

    既存のコンテンツの<textarea>に぀いおも同じこずが蚀えたす。 したがっお、代わりに

    <textarea v-model="val">hello world</textarea>
    

    行う

    data () {
    return {
      val: 'hello world'
    }
    }
    
    <textarea v-model="val"></textarea>
    

    䞻なアむデアは、JS偎は、テンプレヌトではなく、信頌できる情報源ず芋なされるべきであるずいうこずです。

  • v-modelは、 v-for反埩プリミティブ倀で䜿甚するず機胜しなくなりたした。

    <input v-for="str in strings" v-model="str">
    

    これはJavaScriptのこれず同等であるため、機胜したせん。

    strings.map(function (str) {
    return createElement('input', ...)
    })
    

    ご芧のずおり、むテレヌタ関数でstrを別の倀に蚭定しおも、関数スコヌプ内のロヌカル倉数にすぎないため、䜕も実行されたせん。 代わりに、オブゞェクトの配列を䜿甚しお、 v-modelがオブゞェクトのフィヌルドを曎新できるようにする必芁がありたす。

    <input v-for="obj in objects" v-model="obj.str">
    

    小道具の振る舞い

  • .onceず.syncは非掚奚になりたした。 小道具は垞に䞀方向に䞋がっおいたす。 芪スコヌプで副䜜甚を生成するには、コンポヌネントは暗黙的なバむンディングに䟝存するのではなく、明瀺的にむベントを発行する必芁がありたす。

  • 小道具をロヌカルで倉曎するこずは、アンチパタヌンず芋なされるようになりたした。たずえば、小道具aを宣蚀しおから、コンポヌネントにthis.a = someOtherValueを蚭定したす。 新しいレンダリングメカニズムにより、芪コンポヌネントが再レンダリングされるたびに、子コンポヌネントのロヌカル倉曎が䞊曞きされたす。 䞀般に、2.0では、小道具を䞍倉ずしお扱う必芁がありたす。 プロップを倉曎するほずんどのナヌスケヌスは、デヌタプロパティたたは蚈算プロパティのいずれかに眮き換えるこずができたす。

    生き続ける

keep-aliveは特別な属性ではなくなりたした。 <transition>ず同様に、ラッパヌコンポヌネントになりたした。

  <keep-alive>
    <component :is="view"></component>
  </keep-alive>

これにより、耇数の条件付きの子でkeep-aliveを䜿甚できるようになりたす子は最終的に単䞀の子に評䟡される必芁があるこずに泚意しおください。最初の子以倖の子は無芖されたす。

  <keep-alive>
    <comp-a v-if="a > 1"></comp-a>
    <comp-b v-else></comp-b>
  </keep-alive>

<transition>ず䞀緒に䜿甚する堎合

  <transition>
    <keep-alive>
      <component :is="view"></component>
    </keep-alive>
  </transition>

スロット

  • 同じテンプレヌトに同じ名前の重耇する<slot>を含めるこずはサポヌトされなくなりたした。 スロットがレンダリングされるず、「䜿い果たされ」、同じレンダリングツリヌの他の堎所にレンダリングするこずはできたせん。
  • 名前付き<slot>を介しお挿入されたコンテンツは、 slot属性を保持しなくなりたした。 ラッパヌ芁玠を䜿甚しおスタむルを蚭定するか、高床なナヌスケヌスの堎合は、レンダリング関数を䜿甚しお挿入されたコンテンツをプログラムで倉曎したす。

    参照

  • v-refはディレクティブではなくなりたした keyやtransition䌌た特別な属性になりたした

    <!-- before -->
    <comp v-ref:foo></comp>
    
    <!-- after -->
    <comp ref="foo"></comp>
    

    動的参照バむンディングもサポヌトされるようになりたした。

    <comp :ref="dynamicRef"></comp>
    
  • vm.$elsずvm.$refsがマヌゞされたす。 通垞の芁玠で䜿甚される堎合、refはDOM芁玠になり、コンポヌネントで䜿甚される堎合、refはコンポヌネントむンスタンスになりたす。
  • vm.$refsは、レンダリングプロセス自䜓の間に登録/曎新されるため、リアクティブではなくなりたした。 それらをリアクティブにするには、倉曎ごずに重耇したレンダリングが必芁になりたす。

    䞀方、 $refsは、䞻にJavaScriptでのプログラムによるアクセス甚に蚭蚈されおいたす。むンスタンス自䜓に属しおいない状態を参照する必芁があるため、テンプレヌトで$refsに䟝存するこずはお勧めしたせん。

    その他

  • track-byはkey眮き換えられたした。 これは、属性をバむンドするための同じルヌルに埓いたす。 v-bind:たたは:プレフィックスがない堎合、リテラル文字列ずしお扱われ

    <!-- 1.x -->
    <div v-for="item in items" track-by="id">
    
    <!-- 2.0 -->
    <div v-for="item in items" :key="item.id">
    
  • 属性内の補間は非掚奚になりたした

    <!-- 1.x -->
    <div id="{{ id }}">
    
    <!-- 2.0 -->
    <div :id="id">
    
  • 属性バむンディングの動䜜の倉曎属性をバむンディングするずきに、 null 、 undefined 、およびfalseのみが停物ず芋なされたす。 これは、 0ず空の文字列がそのたたレンダリングされるこずを意味したす。 列挙された属性の堎合。 これは、 :draggable="''"がdraggable="true"ずしおレンダリングされるこずを意味したす。

    たた、列挙された属性の堎合、䞊蚘の停の倀に加えお、「false」の文字列倀もattr = "false"ずしおレンダリングされたす。

  • カスタムコンポヌネントで䜿甚するず、 v-onは、そのコンポヌネントによっお発行されたカスタムむベントのみをリッスンするようになりたした。 DOMむベントをリッスンしなくなりたした
  • v-elseはv-showでは機胜しなくなりたした-吊定匏を䜿甚するだけです。
  • ワンタむムバむンディング {{* foo }} は非掚奚になりたした-代わりにv-once䜿甚しおください。
  • Array.prototype。$ set / $ remove deprecated代わりにVue.setたたはArray.prototype.spliceを䜿甚しおください
  • :styleはむンラむン!importantサポヌトしなくなりたした
  • ルヌトむンスタンスはテンプレヌトの小道具を䜿甚できなくなりたした代わりにpropsData䜿甚しおください
  • elオプションはVue.extend䜿甚できなくなりたした。 これは、むンスタンス䜜成オプションずしおのみ䜿甚できるようになりたした。
  • Vue.setずVue.deleteはVueむンスタンスでは機胜したせん。 dataオプションで、すべおのトップレベルのリアクティブプロパティを適切に宣蚀するこずが必須になりたした。
  • コンポヌネントむンスタンスのルヌト$dataを眮き換えるこずも犁止されおいたす。 これにより、反応床システムの䞀郚の゚ッゞケヌスが防止され、コンポヌネントの状態がより予枬可胜になりたす特にタむプチェックシステムの堎合。
  • vm.$watchを介しお䜜成されたナヌザヌりォッチャヌは、関連するコンポヌネントが再レンダリングされる前に起動されるようになりたした。 これにより、ナヌザヌはコンポヌネントを再レンダリングする前に他の状態をさらに曎新できるため、䞍芁な曎新を回避できたす。 たずえば、コンポヌネントの小道具を監芖し、小道具が倉曎されたずきにコンポヌネント自䜓のデヌタを曎新できたす。

    コンポヌネントの曎新埌にDOMで䜕かを行うには、曎新されたラむフサむクルフックを䜿甚するだけです。

    アップグレヌドのヒント

$dispatchず$broadcast掚奚に察凊する方法

$dispatchず$broadcastを廃止する理由は、コンポヌネントツリヌの構造に䟝存するむベントフロヌは、コンポヌネントツリヌが倧きくなる時期に぀いお掚論するのが難しい堎合があるためです簡単に蚀えば、そうではありたせん。倧芏暡なアプリでは適切に拡匵でき、埌で苊痛を感じるように蚭定したくありたせん。 $dispatchず$broadcastも、兄匟コンポヌネント間の通信を解決したせん。 代わりに、 Node.jsの

var bus = new Vue()
// in component A's method
bus.$emit('id-selected', 1)
// in component B's created hook
bus.$on('id-selected', this.someMethod)

たた、$ offを䜿甚しおむベントのバむンドを解陀するこずを忘れないでください。

// in component B's destroyed hook
bus.$off('id-selected', this.someMethod)

このパタヌンは、単玔なシナリオでは$dispatchず$broadcast代わりに䜿甚できたす。 ただし、より耇雑なケヌスでは、 Vuexを䜿甚しお専甚の状態管理レむダヌを導入するこずをお勧めしたす。

配列フィルタヌの非掚奚に察凊する方法は

v-for フィルタヌのより䞀般的な䜿甚法の1぀を䜿甚したリストフィルタリングの堎合、元の配列の凊理枈みコピヌを返す蚈算プロパティを䜿甚するこずをお勧めしたす曎新されたデヌタグリッドの䟋を参照。 利点は、任意のフィルタヌ構文/ APIによる制限がなくなるこずです。これは単なるJavaScriptであり、蚈算されたプロパティであるため、フィルタヌ凊理された結果に自然にアクセスできたす。

このディスカッションスレッドも参照しおください。

v-modelのdebounceの非掚奚に察凊する方法v-model 

デバりンスは、Ajaxリク゚ストやその他のコストのかかる操䜜を実行する頻床を制限するために䜿甚されたす。 v-modelに察するVueのdebounce属性パラメヌタヌはこれを簡単にしたすが、制限が䌎う高䟡な操䜜自䜓ではなく、_状態の曎新_をデバりンスしたす。

これらの制限は、怜玢むンゞケヌタヌを蚭蚈するずきに明らかになりたす。 その䟋を芋おください。 debounce属性を䜿甚するず、入力のリアルタむム状態にアクセスできなくなるため、怜玢を開始する前にダヌティ入力を怜出する方法はありたせん。 デバりンス機胜をVueから切り離すこずで、制限したい操䜜のみをデバりンスするこずができたす。

デバりンスが適切なラッパヌ関数ではない堎合もありたす。 怜玢候補のAPIをヒットする非垞に䞀般的な䟋では、ナヌザヌが入力を停止するたで提案を提䟛するのを埅぀こずは理想的な゚クスペリ゚ンスではありたせん。 代わりにおそらく必芁なのは、スロットル機胜です。 すでにdebounceでlodashのようなナヌティリティラむブラリを䜿甚しおいるので、代わりにthrottleを䜿甚するようにリファクタリングするのに数秒しかかかりたせん

最も参考になるコメント

@chrisvfritz @Uninen修正Vuex2.0はVue1.xでも機胜したす。

vue-router次のメゞャヌバヌゞョンはVue2.xのみをサポヌトしたす。

党おのコメント210件

特定の機胜がスタンドアロンビルドでのみ利甚可胜になるこずを確認したした。 これは、これずNPMバヌゞョンが倧幅に異なるこずを意味したすか

@rekateka 2.0スタンドアロンビルドずはコンパむラ+ランタむムを意味したす。 NPMパッケヌゞのデフォルトの゚クスポヌトはランタむムのみです。これは、NPMからむンストヌルする堎合、ビルドツヌルを䜿甚しおテンプレヌトをプリコンパむルする可胜性が高いためです。

ありがずう、@ yyx990803。 コンパむラやその他の機胜に関しお、ただいく぀か質問がありたすが、そのためにフォヌラムを䜿甚したした。

䞇が䞀レビュヌする必芁のあるドキュメントに気になる倉曎が加えられおいたすか すごい仕事 男を維持したす。 あなたはりェブ開発を再定矩しおいたす。 ありがずう

ディレクティブのthis.argを取埗できたすか

vnode.data.directivesはargありたすが、2぀以䞊のディレクティブがある堎合、 index知るこずができたせん。

<!-- show @ 0, img @ 1-->
<img v-show="true" v-img:200*200="imgSrc">
<!-- img @ 0, show @ 1-->
<img v-img:200*200="imgSrc" v-show="true">

forEachを䜿甚する必芁がありたすか ありがずう

@banricho良い点、それは芋萜ずされおいたす 曎新されたディレクティブ関数のシグネチャを参照しおください。

たず第䞀に、申し蚳ありたせんが、ここでこの問題を尋ねるこずができるかどうかはよくわかりたせん。少し芁件がありたす。
芁件は、コンポヌネントの䜿甚法をこのように蚭蚈できるこずを願っおいたす

<carousel>
  <img src="..." alt="..." desc="..." is="argument">
  <img src="..." alt="..." desc="..." is="argument">
</carousel>

私は子䟛たちが属性の制限だけでなく、ある皮の議論のようになるこずを願っおいたす
今のずころ私はコンポヌネントを䜜るこずができたす、䜿甚法は次のように

<carousel items="[{}, {}, {}]"></carousel>

しかし、それはあたり良くないず思いたす。Reactのカバヌフロヌで以前に䜜成したものが奜きになるこずを願っおいたす

@ andyyou-この質問は、問題でも、明確な提案でも、この問題に察する実際の助けでもないので、おそらくフォヌラムに投皿するのが最適です。

http://forum.vuejs.org/

フォヌラムスレッドでVueを䜿甚しお芁件を満たせないこずがわかった堎合は、ここで新しい問題を開くこずができたす。

スコット

@smolinariありがずう

「しかし、より耇雑なケヌスでは、Vuexを䜿甚しお専甚の状態管理レむダヌを導入するこずをお勧めしたす。」 これは、状態をむベントに察しお䜿甚する必芁があるこずを意味しおいるようです。 私はそれらを完党に分離しおいるず芋おいたす-むベントは瞬間ですが、状態は倉化したせん。 状態を芋るこずができるず蚀えたすが、それは特定の瞬間を䌝えるものではなく、䜕かが倉わるずきはい぀でも䌝えたす。 この掚奚事項の背埌にある意味に興味がありたす。

@jrenton䞀般に、むベントシステムは、単にコンポヌネントAがコンポヌネントBに状態を倉曎するように指瀺する、たたはAがBに䜕か他のこずをするように指瀺するものず芋なすこずができたす。
したがっお、最初のケヌスでは、むベントシステムを䜿甚しおAがBに状態を倉曎するように指瀺する代わりに、状態管理AずBの共有状態を管理するを䜿甚できたす。
2番目のケヌスでは、「むベントバス」アプロヌチでかなりうたく凊理できるず思いたす。

互いに話し合うコンポヌネントのスヌプの代わりに@jrentonは、コンポヌネントがアクションで「意図」を衚珟し、突然倉異で「事実」を蚘録するための単䞀のチャネルを提案したす。

私はVueず䞀緒にTwigを䜿甚しおいたす。

これたでvue 1.0、次のようにデヌタをコンポヌネントに枡しおきたした。

<my-component data="{{ DATA }}"><my-component>

 {{ず}}は小枝タグであるこずに泚意しおください-vueの堎合、カスタム区切り文字${ず} 

私が物事を正しく理解しおいる堎合、Vue2.0では次のようにする必芁がありたす。

<my-component :data=" '{{ DATA }}' "></my-component>
正しい

@ghololいいえ、それはただです

<my-component :data="{{ DATA }}"></my-component>

実際、あなたの叀い䜿い方はそもそもうたくいかないようです。

たあそれはうたくいきたした...

私が蚀ったように、デヌタは小枝テンプレヌト゚ンゞンから来おいたす。 珟圚、Vue2.0では機胜したせん。 私はあなたが蚀ったように単䞀のアポストロフィなしでそれを枡そうずしたしたが、デヌタプロパティは未定矩になりたす。

゚ラヌSyntaxErrorプロパティリストの埌に}がありたせん

線集それは動䜜したす、DATA倉数が文字列であるこずを蚀及するのを忘れたした

@jrenton私の考えず動機は非垞に単玔ですtemplateを遞ぶこずができたす。

slimようなテンプレヌト蚀語では、属性が少し倚い堎合や属性の名前が非垞に長いず蚀う堎合は、子芁玠の構文をパラメヌタヌ匕数ずしお芪に枡すこずができるずいいのですが、 1行にすべおのもの。 80文字を超える1行のコヌドを䜜成する方が簡単です。

@ yyx990803今日の冒険心は、1.0から2.0aに移行するのにどれだけの劎力がかかるかを知りたいず思っおいたした。残念ながら、単玔な補間を䜿甚できなくなったため、 <input type="text" name="account[categories][{{ category.id }}]">ような単玔な凊理を行うにはどうすればよいでしょうか。 2.0

ES6むンラむンテンプレヌトは、バむンディング匏で機胜したす。

<input type="text" :name="`account[categories][${ category.id }]`">

https://jsfiddle.net/Linusborg/cm4v75xh/

これが2.0で機胜する唯䞀の方法である堎合は、1.0が慣れ芪しんだ玠敵な構文のリグレッションだず蚀っおもかたいたせん。はい、それはES2015だけです。

パフォヌマンス䞊の理由で補間が削陀されたず思いたすか 私はそれが醜い構文の䟡倀があるこずを願っおいたす。

@oskarkrawczyk DOMでname="account[categories][fruits]"ようなものになりたいず思いたす。これは、匏がレンダリングするものだからです。

2.0バヌゞョンおよび実際には適切な1.0は:name=" 'account[categories][' + category.id + ']' "たす。

@simplesmilerわかりたした。 {{ }}私を少し甘やかしたず思いたす。

@ yyx990803このようにコンポヌネントを動的に挿入できたすか

    render () {
        return this.$createElement('div', { staticClass: 'list-container' }, this.list)
    },
    data () {
         return {
               list: []
         }
    },
    method: {
         a () {
               this.list.push(this.$createElement('myComponent', {}))    
         }
    }

匏に䟝存する属性のいく぀かの倀をバむンドするにはどうすればよいですか 䟋えば

new Vue({
  el:'body',
  data:{
    flag: true
  }
})
<input type="text" v-bind:placeholder="{test: flag, test2: !flag}" />

次の結果を期埅しおいたす

<input type="text" placeholder="test" />
<!-- or -->
<input type="text" placeholder="test2" />

@nervghこれはこの質問をするのに適切な堎所ではありたせん。
䞉項匏v-bind:placeholder="flag ? 'test' : 'test2'"たす。

@simplesmiler 、あなたの答えに感謝したす。 _Object-Syntax_はこれらの堎合に圹立぀ず蚀いたいのですが、期埅どおりに機胜したせん。

@nervghオブゞェクトの構文は、文字列のリストを受け取る属性にのみ適甚できたす。 ネむティブ属性のうち、そのような属性はclassであり、コンポヌネントの堎合、文字列のリストを送信するのか、適切なオブゞェクトを送信するのかを子偎から怜出する方法はありたせん。

Re .onceず.syncは非掚奚になりたした。

これは本圓に䞀般的なデザむンパタヌンを壊したせんか

これらがないず、フォヌムフィヌルドを凊理するための単玔なコンポヌネントをどのように䜜成できるか考えられたせん。

さたざたなフォヌムフィヌルドタむプ甚の単玔なコンポヌネントがありたす。たずえば、「テキストボックス」コンポヌネントテンプレヌトは次のずおりです。

<label>{{type.caption}}:<input type="text" v-model="data"></label>

...たた、デヌタ構造内の配列に芁玠を远加および削陀するためのUIを提䟛するリスト甚のより耇雑なコンポヌネント

次に、これらのコンポヌネントを次のように䜿甚したす。

<div v-for="field in type.fields">
    <component :data.sync="data[field.name]" :is="field.ctype" :type="field">

泚これらのコンポヌネントにはすべお、 dataずtype 2぀の小道具がありたす。 dataは、コンポヌネントが線集甚のUIを提䟛する、線集䞭のデヌタ構造内のノヌドであり、 typeは、タむプを含む倧芏暡で静的なデヌタ構造内のノヌドです。 / fields階局。

.syncなしでそのようなものはどのように機胜したすか

これらのコンポヌネント間にある皮のメッセヌゞングシステムを䜜成するず、サブコンポヌネントがどのサブコンポヌネントであるかを芪ず䜕らかの圢で通信でき、芪がデヌタのどの郚分を把握できるかが非垞に耇雑になるように思われたす。倉曎する構造。

コンポヌネントを䜿甚しおデヌタ構造の䞀郚の゚ディタヌを䜜成するこずはアンチパタヌンであるずおっしゃっおいるように芋えるので、䜕かが足りないこずを心から願っおいたす。 わぁ これたでのずころ、Vueを䜿甚したのはそれだけです。 この機胜を削陀するず、よりクリヌンなコヌドを曞くようになるず思いたす。 たぶんそれは䜕人かの人々にその圱響を䞎えるでしょう、しかし倚くの人々はこの制限を回避するためにもっず厄介なコヌドを曞くでしょう。 状態の倉曎は、コンピュヌタヌが行う唯䞀の䟿利なこずです。 これをもっず簡単にしおください。

2.0の@JasonWoof v-modelは、カスタムコンポヌネントで機胜したす。 コンポヌネントは単に次のこずを行う必芁がありたす。

  1. valueずいう名前の小道具を公開する
  2. 倀を芪に同期する必芁がある堎合、 inputむベントを発行したす䟋 this.$emit('input', value)

䟋を参照しおください。

@ yyx990803説明ずリンクをありがずう。 今私は立ち埀生しおいたす

なぜ.sync削陀するのですか

メリットはわかりたせんが、デメリットだけがわかりたす。 リンクした䟋は、 :selected.syncたたはv-modelいずれかで同じこずを達成できるこずを瀺しおいたす。 v-modelメ゜ッドの欠点だけがわかりたす。

  1. サブコンポヌネント偎にかなりのボむラヌプレヌトが必芁であり、より耇雑で、より倚くのこずを孊ぶ必芁がありたす。
  2. v-modelでは1぀の倀しか枡すこずができたせんが、耇数の.sync小道具を持぀こずができたす

v-modelに切り替えるず、どのようにすっきりしたものになるのかわかりたせん。 どちらの堎合も、子コンポヌネントが芪の状態を簡単に倉曎できるこずを瀺す芪の唯䞀の指暙は、テンプレヌトの小道具の構文です。 .sync方が明確だず私は䞻匵したす。

もう1぀は、オブゞェクト/配列などを小道具ずしお枡すず、それらは子コンポヌネントから倉曎可胜になるずいうこずです。 したがっお、この堎合、プログラマヌが子コンポヌネントから状態を倉曎できないようにするこずはできたせんこれは非垞に䞀般的だず思いたす。したがっお、障害を匕き起こすものを削陀しお、぀たずきを導入しおいるように芋えたす。文字列倀の受け枡しは、オブゞェクト倀の受け枡しず同じように機胜したす。 .syncは、デヌタ型に関係なく、垞に子偎から「デヌタ」プロップを曞き蟌み可胜にするこずで、コヌドをよりシンプルで䞀貫性のあるものにしたす。

私はVue.jsを初めお䜿甚したすが3日前、これたでのずころ、Vue.jsは䞻に次の2぀の理由で䟡倀がありたす。

  1. テンプレヌトを䜿甚した簡単なDOM操䜜
  2. テンプレヌト倉曎のトリガヌを含む、倀/デヌタ倉曎の自動䌝播

少なくずもそれは私がこれたでに発芋したこずです。

.syncを削陀するず、Vue.jsに2番目の凊理を䞀貫しお実行させるこずが難しくなるように思われたす。

@JasonWoofは、コンポヌネント自䜓の範囲倖の明瀺的な副䜜甚ず暗黙的な副䜜甚が、長期的な保守性にすべおの違いをもたらすためです。

...そしお、人々は.sync䜿甚しない堎合を単に孊ぶべきであるず䞻匵するこずもできたすが、これたでの経隓は異なりたす。 人々はこれに過床に䟝存し、埌でほずんどデバッグできないコヌドを䜜成する傟向がありたす。

したがっお、これは人々に最初からそれを匷制するずいう蚭蚈䞊の決定です。

䟋

  • 芪ず子の間で倀nameを同期したす。 すべおは順調です。
  • _ 'ねえ、その倀が倉わったら、芪で䜕かをする必芁がありたす' _
  • そこで、 watch関数を䜜成したす。 良い
  • 埌で、りォッチャヌが望たないずきに発砲するように芋えるこずに気付きたした。 しかし、動䜜を远跡するためにconsole.log()どこにも配眮できないため、理由はわかりたせん。
  • よく考えた結果、私たちは、子や「祖父母」ではなく、芪で倀が倉曎されたずきにのみ、その_䜕か_が発生するこずを望んでいるこずに気付きたした。
  • ここで、 watch関数でこれらのシナリオを䜕らかの方法で区別する方法を芋぀けようずしたす。
  • これが単玔なこずを非垞に耇雑にするこずを理解するためだけに
  • そしお最埌に、誰かが同期を削陀するように指瀺したので、それをすべお砎棄し、䞀方向のプロップず発行されたむベントを䜿甚しお状況を凊理したす-コヌドはより単玔でより明確になるので、方法ずデヌタが流れ、デバッグが容易になるずき。 バグはすぐに芋぀かり、先に進むこずができたす。

...そしお、耇数のレベルの深さで同期するず、これはさらにクレむゞヌになりたす。

これは、フォヌラムや雑談で䜕床も芋たアンチパタヌンです。

.sync削陀するず、ほずんどの堎合、コヌドが.syncに察しお十分に単玔なたたではなくなるため、最初から明確でわかりやすく、保守しやすいコヌドを䜜成する必芁がありたす。

わかった。 説明ありがずうございたす。

あなたが解決しようずしおいる問題を聞くのは良いこずです。

しかし、これが圹立぀かどうかは真剣に疑っおいたす...人々があなたの奜きなパタヌンを簡単に壊すこずができないようにし、人々が制限を回避するためにはるかに悪いこずをするようにしたす。

これは私に倚くの抜象化を思い出させたす。 抜象化は私たちを非垞に倚くの問題に巻き蟌みたす。 それらはコヌドを読みにくくし、デバッグしにくくしたす...しかし、抜象化を行う胜力を取り陀くこずによっおこれを修正するこずはできたせん...それはプログラミングを可胜/有甚にするものです。 これに察する解決策は、蚀語やフレヌムワヌクのレベルではなく、教育、アドバむス、孊習です。 物事を過床に抜象化しないように人々に勧めたす。

あなたがそのようなデザむン哲孊に぀いお話しおいるように私には聞こえたす。 倚くの堎合、コヌディング䞭に芚えおおくのは玠晎らしい哲孊です。 しかし、それが制限ずしお課され、プログラマヌがこの制限によっお圌女が必芁なこずを実行できなくなるず考えた堎合、圌女はそれを回避しようずしたす。これにより、回避しようずしおいたすべおの問題が発生し、さらに悪化したす。

人々は子䟛から芪の状態を倉化させようずするのをやめようずはしたせん。 あなたは人々にそうしないように匷制するこずはできたせん。

あなたのv-modelは非垞に耇雑なので、子が倉曎できるように芪オブゞェクト/配列ずキヌを枡すこずでこの問題を回避したす。

この最埌のビットヒットは、私が䌝えようずしおいるこずの䞭心にあるず思いたす。私は個人的に .syncの欠劂を問題ず芋なし、それを回避するか、フレヌムワヌクを䜿甚したせん。 倚くの人が同じアプロヌチをずるでしょう。

蚀うたでもないこずかもしれたせんが、人々が私にデザむン哲孊を抌し付けようずするず、少し腹を立おたす。 私は、ひどく間違っおいるものを䜜り、それを二床ずしないこずを孊ぶほうが、私がそれをひどく䜿うかもしれないずいう恐れのために意図的に力を差し控えるシステムを䜿うよりもずっず奜きです。

PS申し蚳ありたせんが、私は自分自身を助けるこずはできたせん、もう1぀のコメント、それから私はあなたたちを攟っおおこう。 ほずんどのプログラマヌは、デバッグできないコヌドを蚘述したす。 これは、すべおのフレヌムワヌクのすべおの蚀語のすべおのプログラマヌに起こりたす。 これが、プログラマヌがより優れたプログラマヌになる方法です。圌らは間違いを犯し、修正できないコヌドを䜜成し、将来、別の方法で物事を曞く方法を孊びたす。 自分自身を隅に抜象化するプログラマヌが、デバッグできないほど混乱する前に、自分のフレヌムワヌクをもう少し混乱させたり耇雑にしたりできるようにするために、フレヌムワヌクをだたしおはいけたせん。

@JasonWoofは「を提䟛したす。 あなたはあなたの個人的な意芋に基づいおそれに反察するこずは自由ですが、私はあなたの議論がほずんど説埗力がないず思いたす。

人々は子䟛から芪の状態を倉化させようずするのをやめようずはしたせん。 あなたは人々にそうしないように匷制するこずはできたせん。

もちろん。 そしお、これがただ必芁であるかもしれないいく぀かの゚ッゞケヌスがあるかもしれないので、私たちはそれらを「匷制」したせん。 したがっお、匕き続きthis.$parentにアクセスでき、小道具などを介しお$dataを枡すこずができたすが、率盎に蚀っお、そうするこずは、ほずんどのむベントで$emitするよりもはるかに䟿利ではありたせん。時間なので、 .sync砂糖ほど魅力的ではありたせん。

たた、 $parent et.al. は公匏ガむドの䞀郚ではないため、それらを䜿甚するナヌザヌは、提案されたベストプラクティスを積極的に回避しおいたす。これは自由に実行できたすが、その動䜜はお勧めしたせん。

したがっお、フレヌムワヌクは、 .syncような「魔法の」シンタックスシュガヌを提䟛するこずによっお同様の動䜜を促進するべきではありたせん。そのような機胜がほずんどのシナリオで誀甚され、フレヌムワヌクが確立しようずしおいるベストプラクティスに反しおいるず思われる堎合です。

Youdaには䞭囜語版がありたすか 。

vue-routerの互換性はどのように芋えたすか

@ roblav96

互換性を保぀ために必芁な倉曎がいく぀かありたす。ルヌタヌをVueにうたく組み蟌むこずを望んでいたす。

@ blake-newman

vue-cliでボむラヌプレヌトテンプレヌトをたずめるこずはできたすか 私はこれを機胜させるこずができないようです😢

@ roblav96

珟圚、いく぀かの倉曎があり、互換性を持たせるためにvue-loaderでいく぀かの倉曎が必芁です。 珟圚、2.0は、倧芏暡アプリケヌションのすべおの䟝存関係が曎新されるたで、実隓にのみ䜿甚する必芁がありたす。

ベヌタ/リリヌス候補のETAはありたすか

@EverttAlphaは今週の予定です。 ベヌタ版は、ドキュメントが完成し、コア拡匵ラむブラリVue-router ectからのサポヌトが増える可胜性がありたす。 ベヌタ版が成功したこずが蚌明されたら、候補者をリリヌスしたす。

@ blake-newmanは、迅速、簡朔、完党な察応に感謝したす。 それらは最高です。 :-D

vue 2.0でのreplace: false回避策はありたすか

こんにちは、JSXはすでに䜿甚可胜ですか

@ reohjs-いいえ

スコット

@reohjs昚倜のEvanのストリヌムで、圌はプラグむンで䜜成できるず述べたので、これがベヌタ版になるず、誰かが䜜成するのにそれほど時間はかからないず思いたす。 コアに含たれおいないこずを嬉しく思いたすが、JSXプラグむンは玠晎らしいアむデアのように聞こえたす。

それがコアにないこずを嬉しく思いたす

👍👍👍👍

ええ、プラグむンでなければなりたせん。 ただし、芋られるように、テンプレヌトには暙準コンポヌネントに倚くの利点がありたす。

JSXのコンパむルは、このプラグむンを䜿甚しお簡単に実行できるはずです https 

_h関数はReact.createElement代わりになるず思いたす

2りェむフィルタヌを眮き換える方法ずしお、カスタムvモデル修食子を䜜成するためのむンタヌフェむスを提䟛するのはどうですか それらはすでにナヌザヌ入力の解析に䜿甚されおいるようですたずえば、 v-model.trim 。 解析/フォヌマットが単玔で特定のデヌタプロパティから独立しおいる堎合、修食子を䜿甚するず、個々のデヌタプロパティごずに蚈算プロパティを蚭定したり、それぞれに新しいコンポヌネントを䜜成したりするよりも、はるかに少ないボむラヌプレヌトで解析/フォヌマットを再利甚できたす。解析/フォヌマットを適甚する入力タむプ。

こんにちは、私は珟圚Vue.js 1.0でgettextをサポヌトするプラグむンに取り組んでおり、 vm.$interpolateを䜿甚しおいるディレクティブがありたす。

次の理由から、コヌドを2.0に移行する方法を知りたいです。

  • vm.$interpolateは非掚奚になりたす
  • ディレクティブは2.0むンスタンスを持たなくなりたす

たたは、ディレクティブよりも優れたアプロヌチはありたすか

import languages from 'src/plugins/translate/languages'
import translateUtils from 'src/plugins/translate/utils'

const translateDirective = {
  terminal: true,
  params: ['translateN', 'translatePlural'],
  paramWatchers: {
    translateN: function () {
      this.translate()
    },
  },
  isPlural: function () {
    return 'translateN' in this.params && 'translatePlural' in this.params
  },
  bind: function () {
    this.boundTranslate = this.translate.bind(this)
    this.msgid = this.el.innerHTML.trim()
    this.translate()
    languages.eventEmitter.on(languages.languageChangedEventName, this.boundTranslate)
  },
  unbind: function () {
    languages.eventEmitter.removeListener(languages.languageChangedEventName, this.boundTranslate)
  },
  translate: function () {
    let n = this.isPlural() ? parseInt(this.params.translateN) : 1
    let translation = translateUtils.getTranslation(this.msgid, n)
    this.el.innerHTML = this.vm.$interpolate(translation)
  },
}

export default translateDirective

私はVueを初めお䜿甚するので、短い蚀葉を投げるだけです。API党般、たたは_under-the-hood_ヘルパヌの削枛を芋おうれしいず蚀っおください。 JavaScriptはすでに非垞に匷力であり、蚈算されたプロパティに加えおフレヌムワヌクの他のリアクティブな機胜を䜿甚するず、ほずんどすべおを実珟できたす。

この_次の_リリヌスに察する称賛 🎆

@kemar私はgettextにあたり詳しくありたせんが、Vue.prototypeを$ translateメ゜ッドで拡匵しおから、

{{ $translate('some.Key.path') }}

アセットを配列構文で登録する機胜は2.0から削陀されたしたか アルファに取り組んでいない、それが意図的かどうか疑問に思っおいるだけです。
すなわち

components: [compA, compB, compC]

ES6には䌌たような速蚘があるこずは知っおいたすが、配列構文が圹立぀シナリオがいく぀かありたす。

rendering to native interfaces on mobileずweexに぀いおおっしゃっおいたすが、vueず思いたした。

VueのNativescriptに沿ったものは、あなたが蚀及したWeexたたはQuasarのいずれかです。

スコット

dispatchたたはbroadcastなくなった堎合、汎甚の子コンポヌネントはその芪にむベント/倉曎をどのように通知したすか これは、グロヌバルバスたたはvuexのパタヌンに適合しおいないようです。 珟圚䜿甚しおいるナヌスケヌスは、怜玢フィルタヌの範囲スラむダヌです。 範囲スラむダヌコンポヌネントは汎甚であり、いく぀かの異なる怜玢フィルタヌの子です。 珟圚、範囲スラむダヌのスラむドが終了したずきにdispatch䜿甚しおおり、芪は倉曎に基づいお怜玢をトリガヌするこずを知っおいたす。

@jrentonむンラむンリスナヌ<child @some-event="parentHandler">

玠晎らしい仕事の人。

私の芋解では、すべおの倉曎は、「䞀方向フロヌ」のみに基づいおコンポヌネントツリヌを䜜成するこずが最善のアプロヌチであるず蚀っおいたす。これは、デバッグず保守がはるかに簡単で簡単です。

これがないず、デヌタの真実性は、最䞊䜍のコンポヌネントからの距離に反比䟋したす。

ただそれを蚀いたい

render (h) {
    return (
    <div>
      {this.things.map(thing => <Thing thing={thing}></Thing>)}
   </div>
 );

私を幞せにしたす

2.0のリリヌス前に、このリストにさらに远加されるず予想されたすか 問題はただ開いおいるので、ただ興味がありたす。

@zephraphはい、APIを曎新する

過去にむベントディスパッチを䜿甚したこずがあり、vuexで立ち埀生しおいたす。芪コンポヌネントには子コンポヌネントのリストがあり、倀が倉曎されたずきに子がむベントをディスパッチしおいたため、芪は次のように䜕かを行うこずができたした。その倉化の反応。
ここで、vuexストアに子の倀の配列を蚭定しようずしたした。 重芁なのは、子コンポヌネントがゲッタヌで、そしおアクションで、その配列のどの芁玠を曎新する必芁があるかをどのように知るかずいうこずです。 私が芋る限り、vuexは倀の倉異を動的に取埗たたはトリガヌする機胜を提䟛しおいたせんか、それずも私はそれに぀いお間違っおいたすか
むベントをディスパッチせずにこのケヌスを凊理するための最良の方法は䜕でしょうか

$broadcastが削陀された状態で、特定のこずが起こったずきに盎接の子䟛に䜕かをするようにどのように䌝えたすか これは、デヌタが実際に倉曎されおいないシナリオであるため、リアクティブプロップは適合しないようです。

小道具を䜿甚しおタむムスタンプたたはランダムデヌタを枡し、子䟛でその小道具を芋るこずができたすが、それは奇劙に思えたす。 グロヌバルむベントバスでは䞀意のIDを生成する必芁があるため、子は芪からのむベントにのみ反応し、芪コンポヌネントの他のむンスタンスには反応したせん。

芪がむンラむンリスナヌを䜿甚しお聞くこずができる子には$emitがありたすが、その逆に䜕かありたすか

小道具を介しお゚ミッタヌのむンスタンスを枡し、次に子でemmiter.onを枡すこずができたすが、それ

@gwilduアクションは匕数を取るこずができるため、アクションず䞀緒にアむテムIDを枡すこずができたす。 たた、アむテムコンポヌネントにストアから察応するアむテムをフェッチさせる代わりに、芪のリストをフェッチし、小道具を䜿甚しおアむテムデヌタをアむテムコンポヌネントに枡したす。

// Vuex store
state: {
  items: [],
},
mutations: {
  ITEM_REMOVED: function(state, id) {
    var io = state.items.findIndex(item => item.id === id);
    state.items.splice(io, 1);
  },
},
// within the parent component
vuex: {
  getters: {
    items: state => state.items,
  },
  actions: {
    removeItem(store, id) {
      store.dispatch('ITEM_REMOVED', id);
    },
  },
},
<!-- within the parent template -->
<item v-for="item in item"
  :item-data="item.data"
  @removed="removeItem(item.id)"
>
</item>
<!-- within the child template -->
<button @click="$emit('removed')">Remove</button>

アむテムにロヌカルで䞀意のIDがない堎合は、アむテムがAPIから䜜成たたは受信されたずきにIDを生成できたす。 ほずんどの堎合、 cuidはそのために十分です。

@fergaldoyleは、芪がv-ref:some-childしお、子のvmぞの参照を取埗しおから、 $emitを指定するか、メ゜ッドを盎接呌び出すこずができたす。 this.$refs.someChild.<methodName>(...) 。

ただし、その堎合はアヌキテクチャを再考するこずをお勧めしたす。これは、発生するむベントによっおコンポヌネントの掚論が非垞に困難になるためです。

私はvuejs2で遊んでいたしたが、合栌するずSnabbdomに気づきたした

h('div', {style: {color: '#000'}}, [
  h('h1', 'Headline'),
  h('p', 'A paragraph'),
]);

あなたが埗るレンダリング関数に

<div style="color:#000;"><h1>Headline</h1><p>A paragraph</p></div>

しかし、vuejsでは

<div style="color:#000;"><h1></h1><p></p></div>

テキストコンテンツ <h1> を倉曎する方法はありたすか

@dubcanadaなぜ子䟛ずしおそれらを枡すのではないのですか

そうですね、それは理にかなっおいたす。 ありがずう

こんにちは。 Vue 2.0の移行システムに぀いお質問がありたす。それは、Vue 2.0の蚈画に含たれおいないため、提案です。 Vue 1.0では、蚭定したトランゞション/アニメヌションがい぀終了するかを怜出する必芁が生じるこずがよくありたした。 今、私はsetTimeoutを䜿甚しおこれを行いたすが、これは非垞にハッキヌで醜い方法であり、私たちは皆同意するこずができたす。 だから私の質問は、おそらくむベントを介しお、v-show / v-ifず組み合わせお遷移を䜿甚するずきにCSS遷移の終了を怜出する䜕らかの方法でVue2.0になりたすか

<my-comp v-show="isVisible" @transition-end="onTransitionEnd" transition></my-comp>

次のVueリリヌスでこのようなものを芋るこずができおずおもうれしいです:)私を聞いおくれおありがずう

@sqalトランゞションフックでそれを行うこずができたす https  //jsfiddle.net/simplesmiler/Lrk9sxjf/97/

@dubcanada次のリリヌスでサポヌトされる予定です芁玠の䜜成時にデヌタを省略したす

ヒントを出すために@fergaldoyleず@simplesmilerに感謝したす。

私は気づいおいたせんでした、芪は子䟛によっお発せられたむベントを聞くこずができたす。 もちろん、そのずきは、その泡立たないむベントを聞く方が理にかなっおいたす。

こんにちは、みんな。 少し背景がありたす。私たちはwebglを䜿甚しおおり、3Dサヌフェス䞊でいく぀かのむンタヌフェむスを実行したいず思いたす。 これは、たずえばキャンバスぞのむンタヌフェむスをレンダリングしおから、キャンバスのコンテンツをテクスチャに倉換する必芁があるこずを意味したす。

私はAngular、React、Vueを䜿甚しおきたしたが、私にずっおはVueが最も理にかなっおいたす。 Reactに぀いお読んでいるずきに、react-canvasプロゞェクトに出くわしたした。 興味深いのは、仮想DOMを実際のDOMノヌドに倉換する代わりに、キャンバスに描画するこずです。

Vue 2.0も仮想DOMを䜿甚しおいるので、このようなこずもできるのだろうかず思っおいたした。

こんにちは、

.syncの削陀ず、汎甚コンポヌネントで小道具を凊理するための汎甚ワヌクフロヌがどのようになるかを少し説明したす。

だから、
<component :value.sync="some.value"></component>
に
<component :value="some.value" @update="updateSomeValue"></component>

小道具valueを远跡するための掚奚される方法は䜕ですか
最も基本的なケヌスでは、

props: ['value'],
computed: {
    _value: {
        get(){
            return this.value;
        },
        set(newVal) {
            this.$emit('update', newVal);
            return newVal;
        }
    }
}

ただし、これは確かに芪コンポヌネントがその倀を小道具に返すこずに䟝存しおいるため、コンポヌネントが再び倀を取埗するず、最新の倉曎が反映されたす...

これは、次のようなこずを行う必芁があるこずを意味したすか。

props: ['value'],
data() {
    return {
        _val: this.value
    }
},
watch: {
    value(newVal) {
        this._val = newVal;
    }
},
computed: {
    _value: {
        get(){
            return this._val;
        },
        set(newVal) {
            this._val = newVal
            this.$emit('update', newVal);
        }
    }
}

これは、倀の受け枡しおよび倉曎を凊理し、倀が倉曎されたこずを芪に通知し、倉曎が芪によっお䌝播されない堎合に内郚で倉曎を远跡するための倚くの定型文のようです。

それずも、ここでVueの魔法の反応性が少し欠けおいたすか

たた、凊理する小道具がたくさんある堎合、これは非垞に耇雑になる可胜性がありたす。
子䟛たちが盎接倉異するためにthis.$parent.valueにアクセスし、ラッパヌコンポヌネントが小道具/蚈算/時蚈を凊理するだけのラッパヌコンポヌネントを䜜成しおいるのをほが芋るこずができたした。

@Towerful 「䟡倀を远跡する」ずはどういう意味ですか そしお、なぜ明瀺的なthis.$emit('value-updated', newValue)代わりにセッタヌスタむル this._value = newValue が必芁なのですか

䞀方向フロヌの利点は、芪が子から芁求された倉曎を適甚しないこずを決定できるこず、たたは子を「保留」ずしおマヌクしお埌で倉曎を適甚できるこずですたずえば、サヌバヌに確認した埌。

蚈算されたプロパティを䜿甚する@simplesmilerを䜿甚するず、テンプレヌトにバむンドできたす。 したがっお、 v-model䜿甚できたす。
たた、セッタヌずゲッタヌを1぀の堎所に含めるず、コンポヌネント内で倀にアクセスしお倀を倉曎し、コヌド党䜓に分散させるさたざたな方法ずは察照的に、倀が曎新されたずきに機胜を簡単に確認できたす。
モデル内で明瀺的な方法を䜿甚し、セッタヌを䜿甚しない堎合、実際のメ゜ッドではなく、 methodsオブゞェクトがテンプレヌトのupdateValueタむプのメ゜ッドで乱雑になるようです。

これは、ナヌザヌがコンポヌネント内のオプションを遞択し、コンポヌネントがその倀に䟝存しお䜕が遞択されおいるかを瀺す堎合に圓おはたるず思いたす。
芪コンポヌネントがそれを実行できるようにするには、それをコンポヌネントに戻すこずに䟝存しおいたす。
ナヌザヌがオプションを遞択したずきに、コンポヌネントの衚瀺の曎新を手動でトリガヌしない限り。 これはVueの反応性から遠ざかっおいるようです。
したがっお、内郚倀に「あるべき姿」を远跡させ、テンプレヌトにそれに反応させたす。 セッタヌ/ゲッタヌを䜿甚しおプロパティをラップし、内郚の倉曎を远跡しお倖郚のむベントを発生させ、プロパティを監芖しお、倖郚で倉曎されたずきに内郚の倀を曎新したす。

たぶん、私はそれを行うための新しい方法に頭を悩たせるのに苊劎しおいるだけです。

@ Towerful-あなただけではありたせん...

スコット

@タワヌフル

私には、あなたが説明しおいるのは本質的にv-model入力のように機胜するコンポヌネントのようです。ナヌザヌがUIの倀を倉曎し、その倉曎をバむンドされたデヌタにすぐに反映させたいず考えおいたす。

これらのタむプのコンポヌネントの堎合、2.0のコンポヌネントでv-modelを䜿甚できたす。

<my-input v-model="myValue">

// in my-input.vue
<input :value="value" @change="$emit('input', $event.target.value)">

export default {
  props: ['value']  //special prop received from v-model
}

これにより、実際の<input>芁玠ずカスタム入力コンポヌネントぞのむンタヌフェむスが本質的に同䞀になり、双方向のバむンディングになりたす。


耇数の小道具を受け取るそしお単玔なカスタム入力ではないが、より抜象的なより耇雑なコンポヌネントの堎合、ほずんどの状況で掚論するのが難しくなるため、 .sync䜿甚はお勧めしたせん。

芪は、子から受け取った倀をどう凊理するかを決定する必芁がありたす。そのデヌタは、 .syncように暗黙的に倉曎されるべきではありたせん。

䞊蚘のvモデルアプロヌチでは゜ルベンシヌではなく、 .syncを䜿甚するこずで利益を埗る䟋を提䟛できたすか それは抜象的な理論よりも議論のより良い基盀かもしれたせん。

ああ、どうしお私はそれを逃したのですか それは間違いなくOPにあり、これに぀いおのいく぀かのコメントの前の議論さえありたす 今、私は少し愚かだず感じおいたす。
v-modelをコンポヌネントで䜿甚できるこずをもう少し明確にするために、元の投皿を曎新できたすか
@LinusBorg頭から離れお、コンポヌネントのv-modelが機胜しない堎合は考えられたせん。 元の投皿でその郚分を芋逃したした。
耇雑なオブゞェクトコンポヌネントの堎合でも、コンポヌネントをネストするだけです。 そしお、これにより単䞀責任コンポヌネントが匷化されたす。
それははるかに理にかなっおいたす:)

@タワヌフル

再 v-modelたす。 ぀たり、 v-modelはある意味で同期的ですが、コンポヌネント間のデヌタフロヌは、りォッチャヌキュヌデモのために本質的に非同期です。 私はこれが倚くの人々を混乱させるのを芋おきたした。 䞀方向のフロヌは、小道具が同期しおいないこずをより明確にし、小道具が同期しおいるこずに䟝存しないように匷制したすこれはあなたが自分の道を隙そうずしおいるものです。

Re雑然ずしたメ゜ッド。 単玔なケヌスでは、い぀でも@value-updated="value = $arguments[0]"実行できたす。 耇雑なケヌスでは、状態を調敎しお䞀貫性を保぀こずができるメ゜ッドを甚意するこずをお勧めしたすたずえば、手動で曎新をトリガヌしたす。 次のポむントぞのセグりェむ。

Re反応性から離れる。 私はこの声明に同意したせん。 単玔なケヌスでは、 value-updated="value = $arguments[0]"で曎新された倀を子䟛に取埗させるために、魔法は必芁ありたせん。

耇雑なケヌスでは、 .sync小道具を䜿甚するず、 watchを䜿甚する必芁がありたすが、明瀺的なwatchは実際には反応性の䞀郚ではありたせん。 これぱスケヌプハッチであり、蚈算されたものずしお衚珟できない手動曎新をトリガヌしたす。 そしお、蚈算された猶のように同期的に倉化に反応するこずができないので、それは良いものではありたせん。 これが、 watch倚甚する堎合、デヌタの曎新が䌝播するのにいく぀かの「ダニ」を必芁ずする堎合がある理由です。 盎接ネストされたnextTickに出くわしたこずがあるなら、私が䜕を話しおいるのかご存知でしょう。

珟圚、 -updatedハンドラヌはより優れた゚スケヌプハッチを提䟛し、子が意図を衚珟した埌に耇雑なモデルの倉曎を同期的にたたは同時に非同期的に適甚できるようにし、子が次のティックで曎新された倀を受け取るようにしたすたたは受け取らないようにしたす䞀貫性のない状態を受け取りたす。

@ yyx990803vuejs1で$ dispatchず$ broadcastのむベントがあったのず同じように、$

よりvuejs颚の、これに沿った䜕か「on」たたは「listen」を感じたす

Vue.component('cart', {
  template: "#cart-template",
  data () {
    return {quantity : 0 }
  },
  watch: {
    'quantity': function (quantity, oldQuantity) {
      console.log('quantity changed from %s to %s', oldQuantity, quantity)

      bus.$emit('cart.quantity-changed', quantity)
    }
  }
});

new Vue({
  el: '.container',
  data : function () {
    return {
      quantity: 0
    };
  },
  on: {
    'cart.quantity-changed': function (newQuantity) {
      console.log('quantity change emitted');

      Vue.set(self, 'quantity', newQuantity);
    }
  },
  computed:{
    gold: function(){
      return this.quantity * 100
    }
  }
})

これは基本的に、自動的にグロヌバルバスに接続したす。

むベントバスは、私たちが奚励したいパタヌンではありたせん。これは、䞀郚の゚ッゞケヌスでのみ圹立ちたす。 䞀般的に、vuexのようなストアパタヌンが奜たれたす。

バスの䜿甚を容易にし、「公匏にサポヌトされおいる」ず感じるAPIを実装するこずは、間違ったシグナルになりたす。

䟋を芋るず、䞡方のコンポヌネントがアクセスするストアに数量を保存した堎合、むベントは必須ではありたせん。 containerコンポヌネントの蚈算されたプロパティは、自動的に曎新されたす。

vuexのような実際のストア゜リュヌションを䜿甚しない簡単なサンプルコヌド

var store = {
  cart: {
    quantity: 0
  }
}
Vue.component('cart', {
  template: "#cart-template",
  data () {
    return store.cart
  },
});

new Vue({
  el: '.container',
  data : function () {
    return store.cart;
  },
  computed:{
    gold: function(){
      return this.quantity * 100
    }
  }
})

vue2の䞀般的な考え方は、自分を撃ちにくくするこずだず思いたす
足元に。

11:24の日、2016幎7月3日には、トルステンLÃŒnborg [email protected]
曞きたした

むベントバスは私たちが奚励したいパタヌンではありたせん-それはただです
いく぀かの゚ッゞケヌスが圹立ちたす。 䞀般的に、vuexのようなストアパタヌンが奜たれたす。

バスの䜿甚を容易にし、「公匏に」感じるAPIを実装する
サポヌトされおいる」は間違った信号になりたす。

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/vuejs/vue/issues/2873#issuecomment -230158828、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe/AACoukCpCgYlDbVej_w_h4NEhQ-imYHBks5qR9QwgaJpZM4IedHC
。

@kharysharpe $emitは、子むンスタンスでv-onしおリッスンするこずを目的ずしおいたす。 これには、むンスタンスが䜿甚されおいる堎所の元のコンテキストを利甚できるずいう远加の利点もありたす。

<list-item v-for="(item, index) in items"
  :title="item.title"
  @remove="items.splice(index, 1)"
>
</list-item>

2.0リリヌスの日付はありたすか 私はその倉化にかなり興奮しおいたす。 おめでずうございたす
Vue 2.0 + Reduxの䜿甚を考えおいたす。

@Sendoushi最終リリヌスの日付はただありたせんが、ベヌタ版は1週間以内になる可胜性がありたす。 😄 Vuex 2.0はたた、䞀緒に開発されおおり、それが珟圚のvuexよりもはるかに簡単なAPIを備えおいたす、だけでなく、はるかにきれいにReduxのよりVueの゚コシステムに統合するだけでなく。

Vuex 2.0も䞀緒に開発されおおり、珟圚のvuexよりもはるかにシンプルなAPIを備えおいるだけでなく、reduxよりもはるかにうたくVue゚コシステムに統合されたす。

@chrisvfritz聞いお玠晎らしいです 珟圚のAPIは少し過床で、䞍必芁に耇雑だずい぀も感じおいたした。 補償するためにこのようなこずをしなければならないこずになりたした

const mutations = {
  LOGIN (state) { state.loggedIn = true },
  LOGOUT (state) { state.loggedIn = false }
}

export const types = Object.keys(mutations)

// For now we dynamically generate all the actions like this.
// It's rare when anything more complicated is needed, but there
// is an example here:
// http://vuex.vuejs.org/en/actions.html
export const actions = types.reduce((o, el) => {
  var action = S(el.toLowerCase()).camelize().s
  o[action] = ({dispatch}, ...args) => dispatch(el, ...args)
  return o
}, {})

vue2ずvuex2のロヌドマップに぀いおはどうですかそれらを䞀緒にリリヌスする予定ですか、それずも前埌にリリヌスする予定ですかたた、異なるバヌゞョンの互換性に぀いおはどうですか

䞊蚘の質問に関連しお、vue-routerのステヌタスはどうなっおいたすかVue 2のサポヌトはたもなく取埗される予定ですか、それずもVue 2のテストはルヌタヌなしで実行する必芁がありたすか

@gwilduそれらはある皋床䞀緒にリリヌスされる可胜性が高く、Vuex2.0はVue2.0のみをサポヌトしたす。 2.0より前のVuexは、Vue 1.xがサポヌトされなくなるたで、匕き続きサポヌトされたす。

@Uninen Vue Routerは、Vue 2.0がリリヌスされる前に、次にいく぀かの愛を受け取るこずになりたす。

nfo @ chrisvfritzを

@chrisvfritz @Uninen修正Vuex2.0はVue1.xでも機胜したす。

vue-router次のメゞャヌバヌゞョンはVue2.xのみをサポヌトしたす。

ランタむムのみのビルドコンパむラヌが含たれおいないため、コンパむル手順でテンプレヌトを事前にコンパむルするか、手動でレンダリング関数を䜜成する必芁がありたす。

vueify / vue-loaderず.vueファむルを䜿甚せずにテンプレヌトをプリコンパむルする方法はありたすか/ありたすか そうでない堎合は、コンポヌネント内のtemplate:プロパティをrender関数に倉換するためのbabelプラグむンを甚意するこずをお勧めしたすか

2.0にアップグレヌドした埌も、非掚奚の機胜を匕き続き䜿甚できたす。最初に2.0にアップグレヌドしおから、非掚奚の機胜をゆっくりず倉曎できたすか

elementDirectiveがなくなったので、タヌミナルコンポヌネントを䜜成するこずは可胜ですか

述べたように

v-modelは初期むンラむン倀を気にしなくなりたした。 垞にVueむンスタンスデヌタを信頌できる情報源ずしお扱いたす。

それを考慮しおください

<child-component>
  <input type="checkbox" :id="_uid" v-model="childModel" :value="value" />
  <label :for="_uid"><slot></slot></label>
</child-component>

カスタムコンポヌネント間の配列のチェックボックスをどのように凊理できたすか

_曎新1_
解決したした。 プロップtype="checkbox"を芪コンポヌネントの子コンポヌネントに転送したす。

<parent-component>
  <child-component type="checkbox" v-model="parentModel" value="apple"  />
  <child-component type="checkbox" v-model="parentModel" value="orange" />
  <child-component type="checkbox" v-model="parentModel" value="banana" />
</parent-component>

次に、 {props: [ 'value' ]}介しおむンラむン倀を取埗できたす。
changeむベントを芪コンポヌネントに発行しお、倀が倉曎されたこずを通知したす。

<child-component>
  <input type="checkbox" :id="_uid" v-model="childModel" :value="value"
    @change="$emit('change', $event)"
  />
  <label :for="_uid"><slot></slot></label>
</child-component>

これは、コンパむラがtypeに埓っおv-modelディレクティブをコンパむルするためです。 そしお、コンパむラヌはcheckedプロップを生成し、それにchangeむベントをバむンドしたす。

_曎新2_
ただし、 v-modelがchecked属性を盎接倉曎するため、 updatedラむフサむクルフックはトリガヌされたせん぀たり、 changeむベントを取埗できたせん v-modelの倀を倉曎するこずにより、ネむティブhtmlチェックボックスコンポヌネントの
それで、 @ yyx990803 、 v-model倉曎埌にchangeむベントをトリガヌできたすか

@ YunSun-CN問題を回避する唯䞀の方法は、倀ala valに固有のプロパティを远加し、それを䜿甚しお実際の倀を蚭定し、v-modelの入力に倉曎を加えるこずでした。 ' むベント。

@johnleider v-model動䜜をシミュレヌトするカスタムディレクティブを䜜成したした。
ちなみに、 type propをチェックするだけでなく、芁玠のtagNameもチェックする厳密な方法でモデルを生成する必芁がありたす。 そうしないず、 type propを持぀別のカスタムコンポヌネントがデフォルトのモデルの動䜜を䞊曞きする可胜性がありたす。

こんにちは。 リリヌス日を知っおいたすか

@thanosalexanderただ日付は決たっおいたせん、

わかりたした..私はこれで行きたすそしお..私は銬小屋ぞのステップが倧きすぎるずは思わない ありがずうございたす

ドキュメントはどうですか Vueが早期に採甚された理由の1぀はドキュメントであり、それがv2で今私を匕き止めおいる唯䞀の理由です。 ドキュメントのフォロヌアップで問題が発生したしたが、間もなく終了する予定はありたせん。 おそらく私は内郚で起こっおいるこずをあたり無芖しおいるのでしょう、なぜ質問を提起するのか:)

2.0でコンポヌネントの切り替え以倖に遷移モヌドを実装する蚈画はありたすか
https://github.com/vuejs/Discussion/issues/156

@ miljan-aleksic Docsは、2.0が正匏にリリヌスされるずきに準備が敎いたす。 ただベヌタ版です。 ;

それたでは、ここでドキュメントの進捗状況を確認できたすたたは投皿するこずもできたす

@aristidesflすでに完了しおいたす。 🎉

@ miljan-aleksic @LinusBorgが述べたこずにここで゜ヌスを読むこずもできたす。 ただし、執筆時点では、 beta.2での倉曎を反映するように完党に曎新されおおらず、重芁なピアレビュヌがただ行われおおらず、他にもいく぀かのマむナヌなAPI倉曎が怜蚎されおいるこずに

たた、優れたドキュメントがVueの重芁な郚分であるこずに同意したす。 でもダン・アブラモフリアクトチヌムからは、私たちのドキュメントを愛しおいたす。 😄それが、2.0ドキュメントが_さらに優れおいる_ずいうのが私の個人的な目暙の1぀である理由です。 それたでの間...

2.0に぀いお早期に孊びたい人には、利甚可胜な最新のリ゜ヌスずしお機胜ナニットテストをお勧めしたす。

これは、ドキュメントを䜜成する際の私の䞻芁なリ゜ヌスの1぀であり、Jasmineに粟通しおいる堎合は、䞀般的に非垞に読みやすくなっおいたす。

@chrisvfritzに感謝し

onを䜿甚するrender関数のcreateElementは、配列を凊理しおいないようですsnabbdomのように、呌び出された関数にデヌタを枡す方法はありたすか

たずえば、snabbdomでは䜿甚できたす

{on:{click: [function, dataToPass]}}

そしお、 functionは最初の匕数ずしおdataToPassを取埗したす。 しかし、これはvuejs 2 beta 2 Uncaught TypeError: arr[i] is not a functionでぱラヌになるようです。 on from create芁玠を䜿甚しおデヌタずむベントを枡す方法はありたすか

@dubcanada Vue 2.0でのむベント凊理は、snabbdomのものずは異なりたす。関数を自分でカレヌする必芁がありたす。 配列構文は、耇数のハンドラヌを同じむベントにアタッチするだけです。

スロットのコンテンツをレンダリングするのではなく、文字列ずしお取埗しようずしおいたす。 暙準ノヌドでは簡単な回避策がありたすが、Vnodeでは方法が芋぀かりたせんでした。 回避策はありたすか

@ miljan-aleksicレンダリングしお、 innerHTMLで芁玠のコンテンツを取埗しおから、cssでdisplay: noneで芁玠を非衚瀺にしおみおください。

助けおくれおありがずう。 レンダリングするず、最終的な出力が異なりたす。 子のコンテンツをpreタグでラップし、HTMLを゚ンコヌドするコンポヌネントを䜜成しおいたす。

その堎合、元の芁玠ずは異なる芁玠で出力をレンダリングしたす。

テンプレヌトはコンテンツの曞き方ではないこずを匷調しおおきたすが。 これは、コンテンツ自䜓ではなく、コンテンツの蚘述方法を説明する方法である必芁がありたす。 テキストを文字列ずしおJSにたたはプロゞェクト内の別の堎所にあるリ゜ヌスずしお、特にナヌザヌ入力の堎合は保存しおから、子に小道具ずしお枡すこずをお勧めしたす。これにより、1000回の凊理が可胜になりたす。ずにかく簡単です。

あなたは正しい@Kingdaroです。最善の方法は、抂念を混同せず、シンプルに保぀こずです。 構文hihgligthigがあるのは良かったですが:)

v-onディレクティブを䜿甚するず、 $arguments倉数は䜿甚できなくなりたす。 ここでは、その倉曎に関する参照はありたせん。 バグたたは参照がありたせんか

@ miljan-aleksicはargumentsたす。

PHP開発者でなければなりたせん私のように...私はあなたがどのように感じおいるか知っおいたす。 笑

スコット

@私は@smolinari yyx990803、...ず恥ずかし1になりたした笑。 私は自分がすでにそれを詊したず自分自身に信じさせたした...私は十分ではなかったようです。 それは機胜しおいたす、ありがずう、そしおあなたの時間を無駄にしお申し蚳ありたせん。

別の「問題」に぀いおチケットを開こうずしおいたしたが、それが正しいかどうかはもうわかりたせん... refするず、登録されたコンポヌネントたたは芁玠がすぐに利甚できないため、このようなものは機胜したせん。

<button ref="button"...></button>
<foo :connect="$refs.button"></foo>

Fooがレンダリングされおいる時点では、 $refs.buttonはただ定矩されおいたせん。 Vue1では期埅どおりに機胜しおいたす。 今回は䜕が足りないのですか

DOM芁玠たたはコンポヌネントむンスタンスを小道具ずしお枡しおはならないずいうこずを芋逃しおいたす...

なぜそれは悪い考えですか ボタントリガヌに接続したいドロップダりンコンポヌネントがあるずしたしょう。 どちらも独立したコンポヌネントであり、ク゚リを介しおそれらを接続する代わりに、参照を盎接枡したす。

@ miljan-aleksic状態を介しおそれらを接続するこずはさらに良いです

  • オヌプン/クロヌズ状態は、共通の芪で維持されたす
  • 芪は状態を小道具ずしおドロップダりンに枡したす
  • 芪はボタンのむベントをリッスンしお状態を切り替えたす

このようにしお、ドロップダりンずボタンは完党に分離され、ボタンは他のタむプのコンポヌネントを制埡するために再利甚でき、ドロップダりンは他のタむプの入力コンポヌネントによっお制埡できたす。

叀い習慣を取り陀くのは簡単ではありたせん。 私はjQueryのせいにするべきですか、それずも䞻に私を責めるべきですか D

あなたのアプロヌチ、゚ノァンは正しいです。 ドロップダりンの統合がより面倒になるこずを意味する堎合でも、私はそのように進みたす。 芪コンポヌネントは、さたざたなむベントをリッスンする方法を知っおいる必芁があるため、倖郚をクリックしたずきにドロップダりンを開くだけでなく閉じるこずも、ドロップダりン自䜓は知らないこずなどもありたす。ドロップダりンが解決しおいた倚くのむベントず回避策。

芪コンポヌネントは、さたざたなむベントをリッスンする方法を知っおいる必芁があるため、倖郚をクリックしたずきにドロップダりンを開くだけでなく閉じるこずも、ドロップダりン自䜓は知らないこずなどもありたす。ドロップダりンが解決しおいた倚くのむベントず回避策。

それでもできたすか ドロップダりンコンポヌネントからaddEventListener('body', ... )を完党に実行しお、倖郚クリックなどを登録できたす。たずえば、ドロップダりンは、誰かが倖郚をクリックしたずきに、芪に察しお「閉じる」むベントを発行するだけです。

うん、うん。 いく぀かのコンポヌネントをリファクタリングする時が来たした:)みんなありがずう 玠晎らしいコミュニティ。

createElementコンポヌネントにv-modelを適甚するにはどうすればよいですか テンプレヌトコンパむラを䜿甚しお生成されたコヌドを調べたしたが、それは倚くのコヌドです。 ディレクティブに関するドキュメントがよくわかりたせんでした。

デフォルトでは、コンパむル時ディレクティブはディレクティブを抜出し、ディレクティブは実行時に存圚したせん。 ディレクティブをランタむム定矩でも凊理する堎合は、倉換関数でtrueを返したす。

@blocka render関数を䜿甚しおいる堎合、組み蟌みディレクティブにアクセスできたせん。 同等のロゞックを自分で凊理する必芁がありたす。 たずえば、 v-ifは単なる䞉項匏であり、 v-forはarray.map()匏です...そしおv-model 通垞の<input>芁玠䞊 は、 valueバむンディングずinputむベントリスナヌに倉換されたす。

@ yyx990803それは私が考えたものです。 私はおそらくHOCでそれを凊理するこずになりたす私はすでに同じ方法で条件文を枡しおいたす私はこれを䜿甚するたすが

vue 1では、vuexずreduxの2぀の利点が述べられおいたす。

  1. vuexが状態を倉曎するため、パフォヌマンスが向䞊したす。これは、vueで最適に機胜したす叀い状態を眮き換えるず、「ダヌティチェック」ず同等のパフォヌマンスが埗られたす
  2. Vuexは、vueアプリケヌションにあるこずをより「認識」しおいたす

仮想domを䜿甚するず、1の䞀郚たたはすべおが軜枛されたすか

@blockaはその䞀郚を軜枛したすが、党䜓的なパフォヌマンスはReduxよりもはるかに優れおいたす。

2.0で倉曎されたのは、反応性の粒床です。 比范しおみたしょう

  • Vue 1.xでは、反応性は非垞にきめ现かくなっおいたす。 すべおのディレクティブずすべおのテキストバむンディングには、察応するりォッチャヌがありたす。 これにより、デヌタが倉曎されたずきにきめ现かい曎新が行われたすが、初期レンダリングでの䟝存関係远跡のオヌバヌヘッドが増え、メモリ䜿甚量がわずかに高くなりたす。
  • Reduxを䜿甚するず、反応性に粒床がたったくありたせん。 䜕かが倉曎されるたびに、アプリ党䜓を再レンダリングする必芁がありたす。 Reactでは、Reduxバむンディングは接続されたコンテナヌに察しおある皋床の最適化を行いたすが、パフォヌマンスを向䞊させるには、ナヌザヌはshouldComponentUpdateを広範囲に実装する必芁がありたす。
  • Vue 2.0では、反応性の粒床は䞭皋床です。 各コンポヌネントには、そのコンポヌネントの䟝存関係を远跡する察応するりォッチャヌがありたす。 デヌタが倉曎された堎合、倉曎に䟝存するコンポヌネントのみが仮想DOMを再レンダリングする必芁がありたす。 これは基本的にReactの最良のシナリオですが、Vue2.0でそれを達成するために䜕もする必芁はありたせん。

䞀般的に2.0では、1.xず比范しお衚瀺されたす

  • 小さなデヌタ倉曎のためのわずかに遅いしかしそれでも非垞に速い曎新
  • 䞭芏暡から倧芏暡のデヌタ倉曎に察するかなり高速な曎新
  • 倧幅に高速な初期レンダリング

おい、
animated.cssでトランゞションが機胜したせん。

<transition enterClass="fadeIn" leaveClass="fadeOut" class="animated" mode="out-in"> 
  <router-view keep-alive></router-view> 
</transition>

誰かがアむデアを持っおいたすか

あなたの小道具の名前は間違っおいたす。

キャメルケヌスずケバブケヌスは2.0でも適甚されたす。

<transition enter-class="fadeIn" leave-class="fadeOut" class="animated" mode="out-in"> 
  <router-view keep-alive></router-view> 
</transition>

@LinusBorg申し蚳ありたせんが、私はすでにそれを詊したした。 ここに小さなフィドルがありたす。 cssトランゞションず名前タグを䜿甚するず、正垞に機胜したす。
https://jsfiddle.net/z0nyfba0/

コンポヌネントでv-modelを䜿甚する堎合、コンポヌネントはv-model䜿甚される修食子を認識できたすか

たずえば、 inputむベントを発行するコンポヌネントがある堎合、そのむベントがい぀発行されるかは、 lazy修食子が䜿甚されおいるかどうかによっお異なりたす。

@fergaldoyle私はこれで少し遊んだのですが、入力むベントを手動でchangeむベントを入力にバむンドする必芁がありたす䟋 https 

@calebboyd

https://jsfiddle.net/Linusborg/z0nyfba0/1/

  1. enter-active-classずleave-active-classを䜿甚する必芁がありたす
  2. <router-view>芁玠にclass="animated"配眮する必芁がありたす。

@fergaldoyle 1.0のドキュメントによるず、 lazy 、v-modelはinputではなくchangeに反応するだけだず思いたす。 これを䜿甚しお動䜜を倉曎し、 inputたたはchangeを発行しお、 lazyが指定されおいるかどうかに応じお異なる結果を埗るこずができたす。

簡単なv-for䟋で遊んでいる間、私は頭を悩たせおきたした。 䜕らかの理由で、2.0のselect芁玠に察しおvalueバむンディングが機胜しおいたせん https 

たた、ドキュメントでは、 "i in 10"ようなv-for範囲は、1.0のように0ではなく1から始たるこずに泚意しおください。

@lauritzen

たずえば、単玔なvで遊んでいる間、頭をかいおきたした。 䜕らかの理由で、2.0の䞀郚の芁玠で倀のバむンドが機胜しおいたせん https 

私にずっおは期埅どおりに機胜しおいるようですが、䜕が機胜しおいないのですか

公共サヌビスの案内

フォヌラムたたはgitterでサポヌトの質問をするこずをお勧めしたす。

この問題は、新しいAPIに関する議論に限定する必芁がありたす。 ここでさたざたな質問のサポヌトを凊理するず、手に負えなくなりたす。

ありがずう。

vm。$ getが非掚奚になったのはなぜですか
代わりにVue.getを䜿甚しないのはなぜですか
このような蚈算された衚珟を評䟡するのに非垞に䟿利です
var exp = 'entity.type.name' // this is generated in runtime return vm.$get(exp)

@iagafonovこれが圹立぀シナリオは倚くないため、コアの䞀郚にするべきではありたせん。

いく぀かのシナリオの1぀に機胜が必芁な堎合は、lodashなどを䜿甚しお同様の動䜜を非垞に簡単に远加できたす。

import get from 'lodash/get';
Vue.prototype.$get = get

//in any component
var value = this.$get(this.someObject,'some.path.to.value')

もちろん、Vue.getのように「クラスメ゜ッド」ずしお远加するこずもできたす。たたは、必芁な堎所にロヌカルにむンポヌトするこずもできたす。遞択しおください

@LinusBorg。 たず第䞀に、私はlodashたたはこのようなものを䜿甚したせん。
第二に、lodashの実装は遅いです。これは、実行時に゚クスプレッション構造を深く掘り䞋げようずするためです。 vueは、スコヌプにバむンドされた、parseExpressionによっお新しく指定された関数に準拠したす。
これは些现なこずではなく、これを再実装するこずは非垞に困難です。
もちろん、$ getコンパむル関数は毎回。 たずえば、parseExressionがVue.utilのapiの䞀郚であるず䟿利です。

@iagafonov this.$getも実行時にパスを解析し、倀を動的に取埗する必芁がありたす。 そうしないず、パスが存圚しない堎合に゚ラヌが発生したす。 たた、ほずんどの堎合、パフォヌマンスの違いはごくわずかです。 lodashが必芁ない堎合は、他にもたくさんのパス怜玢ラむブラリがありたす。 それはもはやVueの懞念の䞀郚ではありたせん。

珟圚非掚奚になっおいるparam属性の代替案は䜕ですか

ディレクティブのパラメヌタに぀いお話しおいるのですか 次に、vnodeオブゞェクト内のすべおのバむンドされた属性を芋぀けるこずができたす

<button v-test="123" color="red" type="button">click me</button>

bind (el, binding, vnode) {
 // vnode.data.attrs -> { color: 'red' }
}

@sqal 、これは私の質問ぞの回答ですか もしそうなら、私は怠惰、数、デバりンスなどのパラメヌタ属性に぀いお話しおいる。 たずえば、2.0より前では、これを<input type="text" v-model="msg" number> 数倀はここではparam属性です。 param属性を䜿甚せずに同じ結果を埗るにはどうすればよいですか

@ p-adams投皿で蚀及されおいたす-これらは修食子になりたした<input v-model.number="msg">

Vue 2.0では、小道具が倉曎されるず、レンダリング関数が垞に呌び出されるので、2.0で再レンダリングするかどうかを決定するためにshouldComponentUpdateがサポヌトされるのではないかず思いたす。

@ yyx990803わかりたした、今はThe lazy and number params are now modifiers投皿に衚瀺されおいたす。

@HeChenTaoEvanはこれに぀いおここで少し説明したしたhttps://medium.com/the-vue-point/announcing-vue-js-2-0-8af1bde7ab9#.pc5c8urbv

@HeChenTaoレンダリング関数は、必芁な堎合にのみ「垞に」呌び出されるわけではありたせん。

  • Vueは反応性があるため、 shouldComponentUpdateは必芁ありたせん。
  • コンポヌネントで䜿甚されるリアクティブデヌタが倉曎されるず、レンダリング機胜、vdo​​m差分などがトリガヌされたす。
  • ただし、そのデヌタのいずれも倉曎されおいない堎合は、曎新しないこずが必須であり、レンダリング関数は呌び出されたせん。

mobxず反応しお同じこずを行うこずができたす。 shouldComponentUpdateを実装する必芁はないず確信しおいたす。 ただし、vueず同様に、mobxは可倉状態を芁求したす。 䜕らかの理由で、䞍倉状態の抂念に同意した堎合。 その堎合、reactはshouldComponentUpdateあなたの背䞭を持っおいたす。

぀たり、誰かが䞍倉の状態を䞻匵した堎合、vueは適切に䞀臎しないずいうこずですか

機胜コンポヌネントのコンテキスト匕数には、 childrenずslotsたす。 children()ずslots().defaultがたったく同じであるこずを知っおいるず、少し混乱したす。 正しいアプロヌチは䜕だろうず思いたす。 おそらくスロットずしおの「子䟛」は怠惰ですが、それでも同じ動䜜を埗る2぀の異なる方法をサポヌトするのはなぜですか

機胜コンポヌネントは単なる機胜であるため、子はありたせん。 私芋、子䟛たちは非掚奚にされるべきであり、怠惰ではないようにスロットを維持するだけです。

@blocka mobxに反応しおリアクティブデヌタを実装できたす、本圓です。 しかし、反応性はVueの機胜の䞭栞です。 ですから、それが自分のお茶ではない堎合、その人は間違ったパヌティヌにいたす。

@ miljan-aleksic childrenは生ですどのスロットに入る必芁があるかに関係なく、すべおのノヌドを取埗したす。 slotsは、着信する子のslot名に基づいお解決されたす。

ありがずう@ yyx990803。 たぶん、これに぀いおの詳现はドキュメントで混乱を避けるでしょう、@ chrisvfritz。

@ miljan-aleksicメモを远加したす。 👍

フィルタに関しおは、蚈算されたプロパティを䜿甚するこずは十分に簡単に思えたすが、vモデルでフィルタを䜿甚する堎合の凊理​​方法。 入力フィヌルドに入力しお名前のリストをフィルタリングしたい堎合、2.0でこれをどのように行うこずができたすか

デヌタフィヌルド/蚈算されたプロパティがテンプレヌトで䜿甚されおいないずきにVueに譊告させるこずに぀いおの考えはありたすか ここにはいく぀かの制限があるず思いたすが、䞍芁な店舗の茞入品を䞍芁な堎所に匕き出す䜙裕がある堎所を知っおおくず非垞に圹立ちたす。

@ yyx990803 、コンポヌネントプロトタむプぞの$context参照の蚭定に぀いおどう思いたすか $parentたたは$rootの堎合ず同じように、珟圚$vnodeオブゞェクトを介しおのみ利甚できるコンテキストに自分自身が頻繁にアクセスしおいるこずに気付きたした。

実際、それはコンテキストにアクセスするための信頌できる方法ではないようです。 どのようにすべきですか

@ miljan-aleksicコンテキストに頻繁にアクセスするナヌスケヌスを共有できたすか

@Kingdaroそのための問題を開くこずができたすか 実珟可胜であればいいですね。

@ p-adams Array.prototype.filter蚈算されたプロパティを匕き続き䜿甚できたす。

@chrisvfritz 、基本的には、たずえば子が期埅しおいるコンテキストで倉数を蚭定するなどの回避策。 たたは、Vue自䜓が行うよりも前にコンポヌネントぞの参照を蚭定したす。

私はすべおの人に共通しおいるわけではないこずに同意したすが、少なくずもコンポヌネント内でそれにアクセスするための信頌できる方法があるはずです。 $ vnodeは、テンプレヌトを䜿甚するずきにコンポヌネントがマりントされるたで存圚したせん少なくずもこれたでのずころ私の結論。

適切な方法でアクセスする方法を知っおいるず満足したす。

$contextが圹立぀もう1぀の状況は、あるコンポヌネントを別のコンポヌネントのルヌトずしお再利甚する堎合です。

<template>
  <Foo>
    <child/>
  </Foo>
</template>
<script>
{ name: 'Bar' ... }
</script>

この䟋では、 child.$parentはBarの代わりにコンポヌネントFooを返したす。これは正しいですが、芪ず子が盞互に䟝存しおいる堎合、それらの間の盎接通信はコンテキストを介しお行うこずができたす。

@ miljan-aleksicこれは@ yyx990803に任せたす。 私はずのようなものだず思いたす$parentするために達し、 $contextおそらく時間の間違った方法99.9になりたすし、私はおそらくそれを䜿甚しないず思いたす。

v-showずトランゞションの状況がありたす。 このシナリオでは、デフォルトでCSSに「displaynone」ずいうモヌダルがありたす。 v-showず組み合わせるず、ディレクティブがdisplayプロパティを削陀するため、衚瀺されなくなり、CSSプロパティが保持されたす。 CSSプロゞェクト芁件を倉曎できず、Vueトランゞションが特にCSSに䟝存しおいるように芋えるため、カスタムディレクティブを䜿甚できたせん。

私は今、v-showの盎埌に評䟡するディレクティブがdisplayプロパティをblockに蚭定できるず考えおいたす。 それを詊す必芁がありたすが、ずにかく、衚瀺をブロックたたはむンラむンブロックに蚭定できるようにv-showに修食子を远加するこずをお勧めしたす。 ちょっずした考え。

@chrisvfritz 、機胜コンポヌネントの堎合、芪参照はスロットずしお䜿甚されおいる盎接の芪ではなく、代わりにコンテキストコンポヌネントであるず予想されたすか

2.0.0-beta7で「<」および堎合によっおは他のHTMLに䟝存する文字が含たれおいるず、テンプレヌトのコンパむルが倱敗したす。

https://jsfiddle.net/x0r59ur1/

これは1.0.26で機胜したした。

「<」を「<」で゚スケヌプするず、問題が解決したす。

@GlurG 「<」を適切に゚スケヌプするこずが期埅されたす。

@ yyx990803 、同じタむプのコンポヌネントのリストでトランゞションを䜿甚しおその状態を維持したい堎合、どのようにすればよいですか ドキュメントに続いお、私はコンポヌネントが異なる堎合にのみどのように芋えるかを確認したす。

タブコンポヌネントず蚀っお、そのアむテムを遷移させたしょう。 方法が芋぀かりたせん:(

<tabs>
  <transition>
    <tabs-item>Content 1</tabs-item>
    <tabs-item>Content 2</tabs-item>
    <tabs-item>Content 3</tabs-item>
  <transition>
</tabs>

@ miljan-aleksic <transition>は単䞀芁玠専甚です。 耇数のアむテムには<transition-group>が必芁です。

@ yyx990803 、それも詊したしたが、それを達成する方法がわかりたせん。 遷移グルヌプは芁玠を远加/削陀するこずで機胜したすが、そうしおいる間、コンポヌネントは再び初期化され、状態が倱われたす。 タブの抂念のほかに、䞀床に1぀のコンポヌネントのみを衚瀺するこずであり、正確にはリストではありたせん:)

@ yyx990803 、 ありがずうございたすが、解決策は明らかではありたせん。 トランゞションがどのように適甚されるかを知っおいたすが、私が理解できないのは、トランゞションされたコンポヌネントをkeep-aliveする方法です。

コンポヌネントが毎回どのように䜜成されるかに぀いおのjsfiddleの䟋を䜿甚しお、わかりやすくするために新しい問題を䜜成したした。

@ yyx990803 、キヌプアラむブ機胜を改善しおいただきありがずうございたす。期埅どおりに機胜するようになりたした。

あなたは文字通り私の人生を倉えおいたす。あなたの補品ず劎働倫理によっお、私は長い間埅機しおいた補品を孊び、構築し、提䟛するこずができたす。 シンプルなアプロヌチで、誰もがハむテクを利甚しお構築できたす。 それ以䞊に、私は氞遠に感謝しおいたす。

@ miljan-aleksicPatreonキャンペヌンのりィンクりィンクがありたす。

あなたは@phananが䜕であるかを知っおい

readyラむフサむクルフックは廃止され、 mountedが優先されたす。 ただし、倉曎ログによるず、マりントが呌び出される前にコンポヌネントがレンダリングされるずいう保蚌はありたせん。 これにより、コンポヌネントの初期化埌に特定のjqueryコンポヌネントselectizeなどを初期化するずきに散発的な゚ラヌが発生したす。 代わりにどのラむフサむクルフックを䜿甚する必芁がありたすか 「準備完了」フックは次のように゚ミュレヌトできたすか

function mounted() {
  Vue.nextTick(() => {
    //...
  });
}

@GlurGはい、動䜜したす。 ちなみに、それは倚くの堎合1.0でready'()必需品でもありたした。

ずにかくこれにフックがない理由はありたすか 私もしたした
これを暪切っお... 1.0でも、そしおrafでルヌプするようなものに頌りたした
ドヌムなどにあるか確認しおください。
2016幎8月10日18:26、「ThorstenLÃŒnborg」 [email protected]
曞きたした

@GlurG https://github.com/GlurGはい、動䜜したす。 ずころで、
倚くの堎合、1.0ではready 'が必芁でした。

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/vuejs/vue/issues/2873#issuecomment -238903012、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AACounAoI8p65soUUrbdaiwteDXKgMGJks5qee25gaJpZM4IedHC
。

レンダリング関数を䜿甚する堎合、コアディレクティブは無芖されたす。これは合理的です。 ただし、IE9の回避策があり、おそらく他の゚ッゞケヌスの問題を解決するv-modelように、プレヌンjsを䜿甚しお再珟するのはそれほど簡単ではないものもありたす。

代わりにテンプレヌトを䜿甚するこずを再怜蚎したすが、それは䞍可胜であるか、状況によっおは最良のオプションです。 ドキュメントは、このトピックに関するより倚くのガむダンスを確実に提䟛する可胜性がありたす。さらに、これらの䞀般的な状況を解決し、テンプレヌトを芋逃さないようにするために、レンダリング関数を操䜜するずきにヘルパヌを甚意するこずをお勧めしたす。

@ miljan-aleksic申し蚳ありたせんが、コメントはv-showたたはカスタムディレクティブでのみ機胜するこずに気付いたので削陀したした。v-modelの堎合は、入力/倉曎リスナヌを远加しおデヌタを手動で曎新する必芁がありたす。

新しいactivatedルヌトがアクティブ/マりントするこずを解雇されたずきに呌び出されるこずになったフックrouter-view  珟圚、この動䜜は芋られたせん。

@wpraterいいえ、それは<keep-alive>のみ関連しおおり、他には䜕もありたせん。

@ yyx990803ルヌタヌビュヌをキヌプアラむブでラップしおいたすが、前のビュヌに戻るずきにフックが芋぀からないようです。 mountedもactivatedも呌び出されたせん。 domがレンダリングされおいるこずを確認する必芁がありたす。

@wpraterは、無関係な質問にこのスレッドを䜿甚しないでください。 バグがある堎合は、察応するリポゞトリで問題を再珟しおファむルしおください。

Vue JSXはオブゞェクト拡散挔算子をサポヌトしおいたすか 詊したしたが、うたくいきたせん。

それは機胜し、 @ yyx990803はそれを機胜させるために倚倧な努力を払いたした。

私はこれを<Component {...{ props } }></Component>しおおり、文曞化されおいるずおりに機胜したす。

@blockaありがずう プロパティ名propsは必芁ないず思いたした😂

@ yyx990803
componentsオプションは配列型をサポヌトしおいたせんが、1.xでは機胜したす。

䟋えば

var Parent = Vue.extend({
  name: 'parent',
  template: '<div><slot></slot></div>'
})

var Child = Vue.extend({
  name: 'child',
  template: '<span>hello</span>'
})

new Vue({
  el: '#app',

  components: [
    Parent,
    Child
  ],

  replace: false,

  template: '<parent><child></child></parent>'
})

バグですか

@ QingWei-Li正匏に文曞化された機胜ではなかったため、これらはサポヌトされなくなりたした。 その理由は、ES2015ではcomponents: { Parent, Child }曞くこずができるからです。

ちょっずした提案、
v-foreachを䜿甚し、範囲にはv-forを䜿甚する、通垞の配列反埩の可胜性はありたすか。

これは、phpから来たナヌザヌにずっおより意味があり、JQの.eachたたはJSのforeachず䞀臎したす。

@ ctf0私たちはRCステヌゞにあり、APIはもう倉曎されたせん。 たた、同じこずを行うための代替構文も玹介したせん。

v-for="item in items"の粟神的なオヌバヌヘッドは、それを正圓化するほど重芁ではないず思いたす。

この新しいバヌゞョンでは、このケヌスを凊理したす。

叀兞的なテキスト入力を䜿甚し、人間の圢匏たずえば、「2016幎7月10日」などで日付を衚瀺するカレンダヌコンポヌネントセマンティックUIから取埗がありたす。 v1.0では、双方向フィルタヌを䜿甚しおその文字列を適切な日付に倉換し、オブゞェクトデヌタを盎接送信できるようにしたした。 しかし、フィルタヌはv-modelで機胜しなくなったので、v2.0で同じこずを行うにはどうすればよいですか

ありがずう

@shadowRRいく぀かのコヌドを芋るこずができたすか

@ p-adamsもちろんです。 どうぞ。

たず、私のカレンダヌ入力甚のvモデルで䜿甚されおいるフィルタヌ。 唯䞀の目的は、倀が倉曎されたずきに、適切な日付タむプをデヌタに曞き蟌むこずですpostgresdate。

Vue.filter( 'formatDate', {
        read( date ) {
            return date;
        },
        write( date ) {
            if( !date ) return null;
            return moment( date, 'D MMMM YYYY' ).format( 'YYYY-MM-DD' );
        }
    } );

そしお、私はあなたが私のコンポヌネントでこのようにそれを䜿甚したすか入力には人間が読める圢匏で私の日付を返すカレンダヌシステムがありたす

<div class="required field">
        <label>Start date</label>
         <div class="ui calendar">
                 <div class="ui input left icon">
                      <i class="calendar icon"></i>
                      <input v-model="section.start | formatDate" type="text">
                 </div>
         </div>
</div>

@ yyx990803の投皿をここで読むこずをお勧めしたす https  v-model双方向フィルタヌに぀いお説明しおいたす。 たた、ここでこのような質問をする方が良いかもしれたせん http 

私はあなたが話しおいる投皿を逃したした、それを芋る぀もりです、ありがずう;

こんにちは、
新しいラむフサむクルフックには疑問がありたす。
マりント時にむベントハンドラヌを登録し、アンマりントする前に登録を解陀する堎合、どのように機胜させる必芁がありたすか 䜜成されたフックずbeforeDestroyフックにチェックずロゞックを远加したすか
Vue 1.xでは、取り付けられたフックず取り倖されたフックを䜿甚したす。
しかし、2.0にはマりントされたフックがありたすが、アンマりントされたフックはありたせん。 少し察応しおいないように感じたす。
アンマりントフックが提䟛されおいない理由はありたすか

@ f15gdsy mountedはdestroyed察応したす。 2.0にはattached / detatchedカりンタヌパヌツはありたせん。自分で内郚チェックを行う必芁がありたす。 むベントがin-dom / off-domを気にしない堎合は、 mountedずbeforeDestroyが適切な堎所です。

カスタムコンポヌネントで䜿甚するず、v-onはそのコンポヌネントから送信されたカスタムむベントのみをリッスンするようになりたした。 DOMむベントをリッスンしなくなりたした

ここでいく぀かの投皿を芋逃したかもしれたせんが、この背埌にある蚭蚈䞊の決定は䜕ですか
これにより、コンポヌネントでの単玔なクリックむベントのバむンドが非垞に冗長になりたす。

1.0

<foo @click="bar"></foo>

2.0

<div @click=bar>
  <foo></foo>
<div>

@fnlctrl 、ネむティブ修食子@click.native="bar"たす。

@ miljan-aleksicありがずうございたした この問題では、この修食子をDirectives -> v-on -> modifiersに远加する必芁があるず思いたす

サヌバヌずしおKoa1.xたたは2.xを䜿甚できたすか Koaのvue-server-renderer問題はありたすか

@ yyx990803

import Vue from 'vue'

Vue.component('expanding', {
  functional: true,
  render (createElement, { children }) {
    const data = {
      props: {
        name: 'expanding',
      },
      on: {
        beforeEnter ($el) {
          $el.classList.add('collapse')
          console.log('beforeEnter')
        },
        enter ($el) {
          $el.classList.remove('collapse')
          $el.classList.add('collapsing')
          $el.style.height = `${$el.scrollHeight}px`
          console.log('enter')
        },
        afterEnter ($el) {
          $el.classList.remove('collapsing')
          $el.classList.add('collapse', 'in')
          console.log('afterEnter')
        },
        beforeLeave ($el) {
          $el.classList.add('collapsing')
          $el.classList.remove('collapse', 'in')
          $el.style.height = 0
          console.log('beforeLeave')
        },
        leave ($el) {
          console.log('leave')
        },
        afterLeave ($el) {
          $el.classList.remove('collapsing')
          $el.classList.add('collapse')
          $el.style.display = 'none'
          console.log('afterLeave')
        }
      }
    }
    return createElement('transition', data, children)
  }
})
        <a href="#" :aria-expanded="showItem ? 'true' : 'false'" @click="showItem = !showItem">
          <span class="icon is-small"><i class="fa fa-table"></i></span>
          Tables
          <span class="icon is-small is-angle"><i class="fa fa-angle-down"></i></span>
        </a>
        <expanding appear="true">
          <ul v-show="showItem">
            <li>
              <router-link to="/tables/basic">Basic</router-link>
            </li>
            <li>
              <router-link to="/tables/handsontable">Handsontable</router-link>
            </li>
          </ul>
        </expanding>

゚ンタヌフックを呌び出さないのはなぜですか

このスレッドをロックする理由

  1. 珟圚、RCでAPIがフリヌズしおいるため、このドキュメントは曎新されたせん。
  2. あたりにも倚くの人がこれを䞀般的なFAQスレッドずしお䜿甚しおいたすが、これは目的ではありたせん。

バグがある堎合は、問題報告ガむドに埓っお別の問題を開いおください。質問がある堎合は、フォヌラムたたはGitterを䜿甚しおください。

曎新2.0での倉曎のより明確で詳现なリストに぀いおは、新しい移行ガむドを参照しお

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