繁体   English   中英

不推荐使用错误过滤器如何解决 vue.js 3 中的此错误

[英]error Filters are deprecated how to solve this error in vue.js 3

我正在尝试在 vue.js 3 中使用过滤器将数据过滤为大写,但此错误显示何时有过滤器?! 我尝试了很多解决方案,但没有办法

主.js:

import Vue from "vue";
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "bootstrap";
import "bootstrap/dist/css/bootstrap.min.css";
import "./scss/main.scss";
import "normalize.css";

createApp(App).use(store).use(router).mount("#app");

    new Vue({
        router,
        store,
        render: h => h(App)
    }).$mount("#app");
    
    Vue.config.productionTip = false;
    
    Vue.filter('uppercase', function (v){
       return v.toUpperCase()
    });

我使用过滤器的组件:

<template>
    <div class="post-box">
        <span class="views">{{ views }}</span>
        <h3 class="title">{{title}}</h3>
        <span class="date">{{ date }}</span>
        <p class="content">{{ content }}</p>
        <div class="row">
          <div class="col-sm-6 author">
            <span class="post-author">{{author | uppercase }}</span>
          </div>
          <div class="col-sm-6 category">
            <span class="post-category">{{category}}</span>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      props: ['title','content','author','category','date','views'],
      name: "BlogPost",
    };
    </script>

你能帮我吗

解决方案是使用计算属性而不是在 vue 3 中删除的过滤器:在 main.js 中删除import Vue from 'vue'和:

new Vue({
        router,
        store,
        render: h => h(App)
    }).$mount("#app");
    
    Vue.config.productionTip = false;
    
    Vue.filter('uppercase', function (v){
       return v.toUpperCase()
    });

在子组件中定义该属性并在模板中使用它,如下所示:

<template>
     ...
          <div class="col-sm-6 author">
            <span class="post-author">{{ uppercase(author) }}</span>
          </div>
     ...
    </template>
    
    <script>
    export default {
      props: ['title','content','author','category','date','views'],
      name: "BlogPost",
      computed:{
         uppercase(){
            return (v)=>{
              return v.toUpperCase()
              }
           }
     }
    };
    </script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM