Vue.js 在网格中渲染多个组件
我们有一个小股票申请。这里我们列出了所有可用的库存。我们有一个Vue.js 在网格中渲染多个组件,vue.js,Vue.js,我们有一个小股票申请。这里我们列出了所有可用的库存。我们有一个stocks.vue组件、下面的代码和一个stock.vue组件。我们这里有4只股票。我们希望在2x2网格中渲染它们。下面的代码以1x4网格呈现它们。 一个div.columns最多可容纳12个div.column(Bulma),因此对于我们的2x2网格,我们需要两个div.columns每个持有两个div.column,每个div.column将持有一支股票 <template> <div>
stocks.vue
组件、下面的代码和一个stock.vue
组件。我们这里有4只股票。我们希望在2x2网格中渲染它们。下面的代码以1x4网格呈现它们。
一个div.columns
最多可容纳12个div.column
(Bulma),因此对于我们的2x2网格,我们需要两个div.columns
每个持有两个div.column
,每个div.column
将持有一支股票
<template>
<div>
<p>Current stocks:</p>
<div class="columns">
<div class="column" v-for="stock in stocks">
<app-stock :stock="stock"></app-stock>
</div>
</div>
</div>
</template>
<script>
import Stock from './stock.vue';
export default {
data() {
return {
stocks: [
{ name: 'BMW', value: '23' },
{ name: 'Apple', value: '223' },
{ name: 'Sony', value: '43' },
{ name: 'EDA', value: '235' }
]
}
},
components: {
appStock: Stock
}
}
</script>
流通股:
从“/Stock.vue”导入库存;
导出默认值{
数据(){
返回{
股票:[
{名称:'BMW',值:'23'},
{name:'Apple',value:'223'},
{name:'Sony',value:'43'},
{name:'EDA',value:'235'}
]
}
},
组成部分:{
应用股票:股票
}
}
现在,有什么好方法可以重写上面的代码,使我们的股票呈现在2x2网格中?是否最好先在计算中重新排列数据,使其更恰当地表示或查看,即在本例中为二维对象数组?您缺少的
是多行的,而是半行的:
<div class="columns is-multiline">
<div class="column is-half" v-for="stock in stocks">
<app-stock :stock="stock"></app-stock>
</div>
</div>
.您缺少的是多行的
,是半行的
:
<div class="columns is-multiline">
<div class="column is-half" v-for="stock in stocks">
<app-stock :stock="stock"></app-stock>
</div>
</div>
罗杜里科的回答绝对正确
将Bulma类“is multiline”添加到columns div,将“is half”类添加到stock column div,这是您需要(也应该)修改的全部内容,以实现所需的网格布局
正如罗杜里科提供的:
<div class="columns is-multiline">
<div class="column is-half" v-for="stock in stocks">
<app-stock :stock="stock"></app-stock>
</div>
</div>
将数据组织到另一个结构中(如2D数组)意味着彼此共享一行的项目之间存在某种共享关系或公共性
[ [item1, item2], [item3, item4] ]
这种格式表明,项1和项2在某种程度上比项3和项4更密切相关,但事实并非如此
尽管可能有一些场景需要为显示数据而重新格式化数据,但在绝大多数场景中,应该在模板/布局中定义数据的显示方式
事实上,在2x2网格中显示2D数组中的数据不仅不是必需的(或有用的),而且这样做实际上可能会带来各种新的挑战
例如,如果要对数据进行排序或搜索,现在需要查看数组内部以比较值,或者说要添加或删除项目,现在需要修改更多的数组,而不仅仅是一个数组
在这种情况下,这些更改不会带来这样的挑战,因为如果应用于stocks对象,其计算属性将自动反映这些更改。但我认为这一点仍然相关。无论何时修改阵列,都必须创建和填充更复杂的数据类型,这不会更快。如果您想要的结果可以通过添加最少的CSS类或规则来实现,那么这就是应该采取的方法
我希望这能回答你问题的另一半。罗杜里科的回答绝对正确
将Bulma类“is multiline”添加到columns div,将“is half”类添加到stock column div,这是您需要(也应该)修改的全部内容,以实现所需的网格布局
正如罗杜里科提供的:
<div class="columns is-multiline">
<div class="column is-half" v-for="stock in stocks">
<app-stock :stock="stock"></app-stock>
</div>
</div>
将数据组织到另一个结构中(如2D数组)意味着彼此共享一行的项目之间存在某种共享关系或公共性
[ [item1, item2], [item3, item4] ]
这种格式表明,项1和项2在某种程度上比项3和项4更密切相关,但事实并非如此
尽管可能有一些场景需要为显示数据而重新格式化数据,但在绝大多数场景中,应该在模板/布局中定义数据的显示方式
事实上,在2x2网格中显示2D数组中的数据不仅不是必需的(或有用的),而且这样做实际上可能会带来各种新的挑战
例如,如果要对数据进行排序或搜索,现在需要查看数组内部以比较值,或者说要添加或删除项目,现在需要修改更多的数组,而不仅仅是一个数组
在这种情况下,这些更改不会带来这样的挑战,因为如果应用于stocks对象,其计算属性将自动反映这些更改。但我认为这一点仍然相关。无论何时修改阵列,都必须创建和填充更复杂的数据类型,这不会更快。如果您想要的结果可以通过添加最少的CSS类或规则来实现,那么这就是应该采取的方法
我希望这能回答你问题的另一半。非常感谢。我确实错过了。我想这回答了我的问题。然而,这个问题仍然代表vue js部分。想知道实际呈现标记的最佳方法是什么。:)但既然它确实解决了问题,我就接受它。非常感谢。我确实错过了。我想这回答了我的问题。然而,这个问题仍然代表vue js部分。想知道实际呈现标记的最佳方法是什么。:)但既然它确实解决了问题,我就接受它。