58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Render Props Component
 | ||
| localeTitle: 渲染道具组件
 | ||
| ---
 | ||
| ## 渲染道具组件
 | ||
| 
 | ||
| 渲染道具是一种先进的React模式,但却如此简单!
 | ||
| 
 | ||
| ### 例
 | ||
| 
 | ||
| 这是一个关于如何使用渲染道具进行切换功能的示例。
 | ||
| 
 | ||
| ```jsx
 | ||
| import React, { PureComponent } from "react"; 
 | ||
|  
 | ||
|  class Toggle extends PureComponent { 
 | ||
|   state = { 
 | ||
|     on: false 
 | ||
|   }; 
 | ||
|  
 | ||
|   toggle = () => { 
 | ||
|     this.setState({ 
 | ||
|       on: !this.state.on 
 | ||
|     }); 
 | ||
|   }; 
 | ||
|  
 | ||
|   render() { 
 | ||
|     const { children } = this.props; 
 | ||
|     return children({ 
 | ||
|       on: this.state.on, 
 | ||
|       toggle: this.toggle 
 | ||
|     }); 
 | ||
|   } 
 | ||
|  } 
 | ||
|  
 | ||
|  export default Toggle; 
 | ||
| ```
 | ||
| 
 | ||
| 这个Toggle组件将返回它的子`state.on`和函数切换。哪个可以用在它的子组件中。
 | ||
| 
 | ||
| 此切换可以使用如下:
 | ||
| 
 | ||
| ```jsx
 | ||
| <Toggle> 
 | ||
|   {({ on, toggle }) => ( 
 | ||
|     <Fragment> 
 | ||
|       <button onClick={toggle}>Show / Hide</button> 
 | ||
|       {on && <h1>I can be toggled on or off!</h1>} 
 | ||
|     </Fragment> 
 | ||
|   )} 
 | ||
|  </Toggle> 
 | ||
| ```
 | ||
| 
 | ||
| 正如您所看到的,切换功能可以由其子按钮用于切换某些内容。如果on为true,则h1-tag将被渲染,否则不会。
 | ||
| 
 | ||
| ## 其他资源
 | ||
| 
 | ||
| *   [反应文档:渲染道具](https://reactjs.org/docs/render-props.html) |