noteのタイトル画像

Vue.jsあるある(かもしれない)

今回は、小話に近いくらい短いです。申し訳ありません。

ちょいとJavaScriptのフロントエンドを書いてます。
もともとangularJS, Reactをポチポチ書いていたのですが、

angularは半年に一回メジャーバージョンアップするって言うし、

Reactはfacebookがバックにいて、私はいまいちfacebookが好きになれないし(情報漏洩疑惑とかなんとか)

で、ミーハー的な好奇心で Vue.jsに絶賛浮気中です。

Vue.jsは

を見てもらって概要を掴んでいただくとして、

今日はわかっちゃいるがやってしまう「あるある」について

そう、例のthis問題です。

<body>
    <div id="app">
        {{message}}
        <button v-on:click="change('変更!')">変更</button>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'hoge',
            },
            methods: {
                change: (val) => {
                    this.message = val;
                },
            }
        })
    </script>
</body>

みたいなコードを書いちゃうんですよね。

当然、変更ボタンでdata部のmessageの内容は変わりません。

どこが悪いかというと「methods」部です。
本当なら

methods: {
    change: function(val) {
        this.message = val;
    },
}

こうしないとダメです。

でもね、もう、function なんて長ったらしい文字を書く癖がかなり抜けているので、ついついラムダ式で書いちゃうんですよ。

で、エラーにもならないから、どこでデータが変化しないかがなかなかわからないと言うジレンマ。

全部ラムダ式に統一できたらどれだけ楽でしょうか。

また、typescriptが羨ましくなってきました。

では、今日はこの辺で。

ソフトウェア・エンジニアを40年以上やってます。 「Botを作りたいけど敷居が高い」と思われている方にも「わかる」「できる」を感じてもらえるように頑張ります。 よろしくお願い致します。