春冰 發表於 2020-5-14 14:13:00

使用react context的作用React.createContext

<p>前言:在实际开发项目的时候我们可能会经常碰到多层组件传值的情况,就是父组件的值传递给子组件。子组件再传递给下面的子组件,再传递给下面的子组件.......可能会遇到这个情况。</p>
<p>然而这个值,可能会只在最后的子组件使用到,那么这个时候使用createContext简直就是无敌的存在。</p>
<p>超级简单又方便,因为最进重构一个项目遇到了多级地狱般的this.props传值,搞得头疼。所以推荐多级使用context。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;使用方式,需要在父组件上面创建一个context,或者建立一个文件用来管理context。</p>
<p>//createContext.jsx 文件</p>
<div class="cnblogs_code">
<pre>export const ButtonContext =<span style="color: rgba(0, 0, 0, 1)"> React.createContext(‘这里是默认值懂吗'</span>);</pre>
</div>
<p>//父组件使用</p>
<p>父组件通过Provider包裹子组件,通过value={ }携带参数。这个Provider可以理解为生产者。</p>
<div class="cnblogs_code">
<pre>import { ButtonContext } from './createContext';    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">引入<br><br><br></span></pre>
<pre>import React, { Component } from 'react';<br><br>class Father extends Component {<br>state:{</pre>
<pre>choseType:'我是要传的值'</pre>
<pre>}<br><br>render() {<br>    return (<br>      &lt;div&gt;</pre>
<pre>    &lt;ButtonContext.Provider value={this.state.choseType}&gt;<span>
     {this.props.children}
    &lt;/ButtonContext.Provider&gt;</span></pre>
<pre>      &lt;/div&gt;<br>    );<br>}<br>}<br><br>export default Father;</pre>
</div>
<p>&nbsp;</p>
<p>//children.jsx&nbsp; &nbsp; &nbsp; &nbsp;//他的子组件或者是子子子子子....组件(只要是在父组件下面的组件就可以)子组件使用Consumer包裹,打印出来的value就是接收到的参数。</p>
<div class="cnblogs_code">
<pre>import { ButtonContext } from './createContext';    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">引入</span>
<span style="color: rgba(0, 0, 0, 1)">

import React, { Component } from </span>'react'<span style="color: rgba(0, 0, 0, 1)">;

class Children extends Component {
</span><span style="color: rgba(0, 0, 0, 1)">

render() {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
      </span>&lt;div&gt;</pre>
<pre>    &lt;ButtonContext.Consumer&gt;<br>      {value=&gt;console.log("context",value)}       //这里打印下看这个value,记得使用时候要return<br>    &lt;/ButtonContext.Consumer&gt;</pre>
<pre>&lt;/div&gt; <span style="color: rgba(0, 0, 0, 1)"> );<br> } }<br> export </span><span style="color: rgba(0, 0, 255, 1)">default</span> Children;</pre>
</div>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    不要说我不会,要说我可以学<br><br>
来源:https://www.cnblogs.com/seemoon/p/12888318.html
頁: [1]
查看完整版本: 使用react context的作用React.createContext