首頁 > 軟體

vue新手入門出現function () { [native code] }錯誤的解決方案

2022-04-11 19:00:06

出現function () { [native code] }錯誤的解決

控制檯輸出錯誤:

[Vue warn]: Unknown custom element: <p1> - did you register the component correctly? 
For recursive components, make sure to provide the "name" option.

頁面提示:

function () { [native code] },無法出現我們想要的內容

頁面程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="vue">
	<!-- 下面這行程式碼出錯-->
    <p1>{{currentTime1}}</p1></br>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
    var vm=new Vue({
        el:"#vue",
        data:{
            message:"hello world"
        },
        methods:{
            currentTime1: function () {
              return Date.now();//返回當前時間戳
          }
        }
    });
</script>
</body>
</html>

綜上錯誤,究其原因就是新人對“計算屬性”:computed和“事件處理”:methods傻傻分不清楚。根據官方檔案總結如下:

對於任何複雜邏輯,你都應當使用計算屬性。其餘可以使用methods處理。

https://cn.vuejs.org/v2/guide/computed.html?

所以,下次如果再出現function () { [native code] },請使用對應的方法獲取值。

這裡的methods方法就應該使用currentTime1()呼叫,計算屬性computed就應該使用currentTime2呼叫。

完整methods方法和計算屬性對比執行程式碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="vue">
    <p1>{{currentTime1()}}</p1></br>
    <p1>{{currentTime2}}</p1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
    var vm=new Vue({
        el:"#vue",
        data:{
            message:"hello world"
        },
        methods:{
            currentTime1: function () {
              return Date.now();//返回當前時間戳
          }
        },
        computed:{  //存在快取,建議不經常的變化的在次操作
            currentTime2:function () {
                return Date.now();
            }
        }
    });
</script>
</body>
</html>

頁面效果:


vue使用過程中遇到的bug及解決

1.用event.target操作當前元素出現bug

改為用event.currentTarget。

2.data資料更新之後渲染頁面是非同步的

所以要在$nextTick裡面,DOM元素更新之後再操作DOM

3.v-cloak解決網路不好時頁面顯示雙花括號{{}}問題

<template>
  <div id="app">
    <div v-cloak>{{ item.title }}</div>
  </div>
</template>
<style>
  [v-cloak] {
      display: none;
  }
</style>

4.v-pre跳過元件和子元件的編譯過程

比如<span v-pre>{{ instead }}</span>渲染出來的是{{ instead }}字串,不會再js中找instead這個資料

5.element的navMenu導航選單的index不能用數位

而要用字串。

解決辦法: :index = "index + ‘’"    轉化成字串

6.vue中main.js一引入sass檔案就報錯

提示路徑找不到或者依賴找不到,是因為webpack.base.conf.js中

{
        test: /.scss$/,
        loaders: ["style", "css", "sass"]
      }

重複配了,把它刪掉就好了(新版的vue-cli預設設定了這個)

7.所有的v-if最好都加上key

否則因為相同標籤元素複用會導致意想不到的bug

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com