我编写了一个使用模板语法的子组件,子组件有一个槽将“item”属性传输给父组件,但父组件使用JSX语法,现在我很难在JSX中获取“item”属性。任何帮助将不胜感激!
// child.vue
<template>
<Autocomplete>
<template slot-scope="{ item }">
<slot :item="item" />
</template>
</Autocomplete>
</template>
Run Code Online (Sandbox Code Playgroud)
// parent.vue
export default {
render () {
return (
<Child>
<template slot-scope='{item}'>
<span>{item}</span> // item is not defined
</template>
</Child>
)
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用函数(代表默认插槽)将插槽作为scopedSlotsprop (Vue 2)传递。default请注意,这对于非默认命名插槽尤其需要(例如,"mySlot"如示例所示):
export default {
render() {
return (
<Child
{
...{
scopedSlots: {
default: ({ item }) => <span>{ item.foo }</span>,
mySlot: ({ myProp }) => <h1>{ myProp }</h1>,
}
}
}
/>
)
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以在主体内传递默认槽渲染方法<Child>:
export default {
render() {
return (
<Child>
{ ({ item }) => <span>{ item.foo }</span> }
</Child>
)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5467 次 |
| 最近记录: |