当前位置:首页 > React

react如何使用插槽

2026-01-24 02:10:13React

使用props.children实现基础插槽

React中插槽的核心是通过props.children传递子组件。父组件在标签内部放置的内容会自动成为children属性:

// 父组件
<Card>
  <h1>标题内容</h1>
  <p>正文内容</p>
</Card>

// 子组件Card
function Card(props) {
  return <div className="card">{props.children}</div>;
}

命名插槽实现方式

通过传递React元素作为props实现具名插槽效果:

// 父组件
<Layout
  header={<Header />}
  sidebar={<Sidebar />}
  content={<MainContent />}
/>

// 子组件Layout
function Layout({ header, sidebar, content }) {
  return (
    <div>
      <div className="header">{header}</div>
      <div className="sidebar">{sidebar}</div>
      <div className="content">{content}</div>
    </div>
  );
}

使用render props模式

通过函数作为子组件实现更灵活的插槽:

// 父组件
<DataProvider>
  {(data) => <Display data={data} />}
</DataProvider>

// 子组件DataProvider
function DataProvider(props) {
  const [data, setData] = useState(null);
  // 获取数据逻辑...
  return props.children(data);
}

组合组件模式

通过组件组合实现类似Vue的作用域插槽:

// 定义可组合组件
function Tabs({ children }) {
  const [activeTab, setActiveTab] = useState(0);
  return (
    <div>
      {React.Children.map(children, (child, index) =>
        React.cloneElement(child, {
          isActive: index === activeTab,
          onClick: () => setActiveTab(index)
        })
      )}
    </div>
  );
}

// 使用方式
<Tabs>
  <Tab label="First">内容1</Tab>
  <Tab label="Second">内容2</Tab>
</Tabs>

Context API实现跨组件插槽

通过Context实现深层嵌套组件间的插槽通信:

const SlotContext = createContext();

// 提供者组件
function SlotProvider({ children, slots }) {
  return (
    <SlotContext.Provider value={slots}>
      {children}
    </SlotContext.Provider>
  );
}

// 消费者组件
function NamedSlot({ name }) {
  const slots = useContext(SlotContext);
  return slots[name] || null;
}

类型检查与默认值

为插槽添加PropTypes类型检查和默认值:

react如何使用插槽

Card.propTypes = {
  children: PropTypes.node,
  header: PropTypes.element,
  footer: PropTypes.element
};

Card.defaultProps = {
  header: <DefaultHeader />
};

分享给朋友:

相关文章

react激光如何使用

react激光如何使用

安装React激光库 在项目中安装React激光库,通常通过npm或yarn完成。确保项目已初始化并具备React环境。 npm install react-laser-beam # 或 yar…

如何使用react native

如何使用react native

安装开发环境 确保系统已安装Node.js(建议LTS版本)。通过npm或yarn全局安装React Native命令行工具: npm install -g react-native-cli # 或…

react如何使用组件

react如何使用组件

使用组件的基本方法 在React中,组件是构建用户界面的核心单元。组件分为函数组件和类组件两种形式。 函数组件示例 function Greeting(props) { return <…

React如何使用防抖

React如何使用防抖

防抖的基本概念 防抖(Debounce)是一种限制函数执行频率的技术,确保函数在连续触发时只执行一次。在React中,常用于输入框搜索、窗口大小调整等高频事件场景。 使用Lodash实现防抖 Lod…

react-router如何使用

react-router如何使用

React Router 的基本用法 安装 React Router 的依赖包: npm install react-router-dom 在应用中引入必要的组件: import { Browse…

react-hooks如何使用

react-hooks如何使用

使用 React Hooks 的基本方法 React Hooks 是 React 16.8 引入的特性,允许在函数组件中使用状态和其他 React 特性。以下是几种常见 Hooks 的使用方式。 u…