代码之家  ›  专栏  ›  技术社区  ›  josefdev

如何在Vue中声明被动属性。js公司

  •  4
  • josefdev  · 技术社区  · 6 年前

    这是Vue路由应用程序的一部分,在其中一个路由中,我有两个属性,bga和bgb,用于更改div的颜色。我不知道如何正确申报,我该怎么做?

    我在Chrome控制台中收到以下消息:

    • vue。js:597[Vue warn]:“data”选项应该是一个在组件定义中返回每个实例值的函数。 警告@vue。js:597

    • vue。js:597[Vue warn]:属性或方法“bga”,“bgb”未在实例上定义,但在渲染期间引用。通过初始化属性,确保此属性在数据选项中或对于基于类的组件是被动的。请参见: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties

    彩色页面。js公司

    const ColorPage = {
        props:
            ['bga', 'bgb'],
        data: {
            bga: {
                backgroundColor: ''
            },
            bgb: {
                backgroundColor: ''
            }
        },
        template: `
    <div id="middle">
        <label id="colorLabel"><h2>'Change Colors By Typing Their Names:'</h2></label>
        </br>
        <input type="text" class="colorInput" v-on:input="bga.backgroundColor = $event.target.value" placeholder="here...">
        </br>
        <input type="text" class="colorInput"  v-on:input="bgb.backgroundColor = $event.target.value" placeholder="... and here!">
    </div>
    `
        ,
    
    };
    
    export default ColorPage
    

    这应用于更改“container”div和“top”div的颜色:

    指数html

        <div id="container" v-bind:style="bga">
            <div class="top" v-bind:style="bgb">
                <div id="app">
                    <h1 id="vueHead">Vue routing</h1>
                    <h2 class="menu">
                        <router-link to="/">Color</router-link>
                        <router-link to="/main">Main</router-link>
                        <router-link to="/settings">Settings</router-link>
                        <router-link to="/vue">Vue</router-link>
                    </h2>
    
                </div>
            </div>
              <router-view></router-view>
        </div>
    

    Vue路由位于索引中。js公司:

    import MainPage from '../components/mainPage.js'
    import ColorPage from '../components/colorPage.js'
    
    const routes = [
        {path: '/', component: ColorPage},
        {path: '/main', component: MainPage},
    
    ];
    const router = new VueRouter({
        routes // short for `routes: routes`
    });
    
    var vm = new Vue({
        el: '#container',
        router,
    });
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   Wild Beard    6 年前

    在创建组件时,Vue的一些典型语法之间略有不同。比如说 Data Must Be a Function

    ..
    data: {
      reactive: true,
    }
    ..
    

    在标准Vue实例中,上述情况非常好。但是,创建组件时,数据属性需要是返回对象的函数:

    ..
    data() {
      return { reactive: true }
    }
    ..
    

    另外 props 与中的任何其他属性一样可供您使用 data