在Vue中重新创建我在React中所做的事情

时间:2018-08-03 03:12:50

标签: reactjs vue.js ionicons

我正在处理自己的个人档案,并且将社交媒体另存为模板,以便仅在React中使用此代码。

  {this.state.contact.map((contact, index) => 
                <a className="social-icons" href={`${contact.href}`} target="_blank" rel="noopener noreferrer" key={index}>
                    <h3 className={`ion-social-${contact.title}`}></h3>
                </a>
            )}

我正在尝试将Vue用于离子社会图标时创建相同的效果,但是由于要接收有关使用v-bind:class的错误,我很难弄清楚如何实现它这没有太大帮助。这是我目前正在尝试的。

 <p class="social-media snippet ion-social-{{social.title}}" v-for="social in socials" v-bind:key="social">
  {{ social.title }}
</p>

我也是Vue的新手。

2 个答案:

答案 0 :(得分:3)

您得到的错误是:

Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. 
For example, instead of <div class="{{ val }}">, use <div :class="val">.

在我的头顶上,有3种方法可以在Vue中设置html属性。

  1. 您要设置字符串文字。就像编写常规HTML一样编写它。

    class="myClass"。您无法在此处插入javascript,这是您要尝试执行的操作,也是Vue警告的内容。

  2. 您要使用组件中定义的javascript变量。使用v-bind

    v-bind:class="myClassVariable"

  3. 与上述相同,其中:只是v-bind的快捷方式。

    :class="myClassVariable"

您的类绑定的工作示例如下所示,

<p class="social-media snippet" :class="'ion-social-'+social.title" ...

:class="..."内的值只是一个表达式,其中'ion-social'是一个字符串文字,并附加了变量social.title。一旦您的模板变得混乱(现在是imo),您应该从模板中删除逻辑并将其放入组件中。

答案 1 :(得分:1)

在Vue 1.0中可以在HTML属性中使用插值,但是从2.0开始不再受支持。在这里,您需要使用v-bind,然后像在JS中一样添加带有字符串的变量。

<p
  v-for="social in socials"
  v-bind:class="'social-media snippet ion-social-' + social.title"
  v-bind:key="social"
>
  {{ social.title }}
</p>