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)
							 |