当前位置: 首页 > 面试题库 >

除了实例的属性可以获取Context外哪些地方还能直接获取Context呢?

柳高卓
2023-03-14
本文向大家介绍除了实例的属性可以获取Context外哪些地方还能直接获取Context呢?相关面试题,主要包含被问及除了实例的属性可以获取Context外哪些地方还能直接获取Context呢?时的应答技巧和注意事项,需要的朋友参考一下

构造函数 constructor(props,context)
生命周期 componentWillReceiveProps(nextProps,nextContext)
shouldComponentUpdate(nextProps,nextState,nextContext)
componentWillUpdate(nextProps,nextState,nextContext)

通过上面方法测试,没获取到


<!DOCTYPE html><html>
<head>
    <meta charset="utf-8" />
    <title>react demo</title>
    <script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
</head>
<body>


<div id="app"></div>


<script type="text/babel">

    /*
    * context 使用方法
     1. 创建store:通过 React.createContext 创建 AppContext 实例
     2. 包裹整个组件:使用AppContext.Provider组件
     3. 注入全局变量,在AppContext.provider组件上
     4. 引入全局变量: 通过 AppContext.Consumer组件 ,子组件的回调,获取store中的内容和方法
    * */

    const { createContext } = React;

    //创建store
    const AppContext=createContext({});

    class A  extends React.Component{
        constructor(props,context){
            super(props);
            this.state={
                a:context
            }
        }

        shouldComponentUpdate(nextProps, nextState,nextContext) {
            console.log(nextContext);
            return true;
        }


        componentDidMount() {
            console.log(this.state.a.name);
        }

        //从store中取值
        render(){
            return (
                <AppContext.Consumer>
                    {
                        (context)=>{
                            return  <div>
                                <div>A组件Name:{context.name}</div>
                                <button onClick={context.changeName}>改变name</button>
                            </div>
                        }
                    }
                </AppContext.Consumer>
            )
        }
    }


    class App extends React.Component{
        //在顶层包裹所有元素,注入到每个子组件中

        constructor(props){
            super(props);
            this.state={
                name:'xz'
            }
        }

        shouldComponentUpdate(nextProps, nextState,nextContext) {
            console.log(nextContext,11);
            return true;
        }

        render(){
            return (
                <AppContext.Provider value={{name:this.state.name,changeName:()=>{
                        this.setState({
                            name:Math.random()
                        })
                    }}}>
                    <A/>
                </AppContext.Provider>
            )
        }
    }

    ReactDOM.render(
        <App />,
        document.getElementById('app')
    );
</script>


</body>

 类似资料:
  • 本文向大家介绍说说Context有哪些属性?相关面试题,主要包含被问及说说Context有哪些属性?时的应答技巧和注意事项,需要的朋友参考一下 简单介绍下Context: 提供了一个无需为每层组件手动添加 ,就能在组件树间进行数据传递的方法。我们在平时开发中如果不使用redux 这种数据状态管理库,可能在数据传递的时候使用的就是从祖先元素层层传递的方式,当层级较多之后,我们需要将数据通过组件的pr

  • 本文向大家介绍Android全局获取Context实例详解,包括了Android全局获取Context实例详解的使用技巧和注意事项,需要的朋友参考一下 Android全局获取Context实例详解 在弹出Toast 启动活动 发送广播 操作数据库 使用通知等等时都需要Context 如果操作在活动中进行是很简单的,因为活动本身就是一个Context对象 但是当逻辑代码脱离了Activity类,此时

  • 全部显示 返回或设置一个字符串,该字符串确定指定命令栏的存储位置。该字符串由应用程序所定义和集成。String 类型,可读写。 说明 只能对自定义命令栏设置Context 属性。如果应用程序不能识别该上下文字符串,或不支持以编程方式修改上下文字符串的功能,那么该属性将失败。 示例 本示例显示一个消息框,该消息框包含命令栏“Custom”的上下文相关字符串。本示例运行于 Microsoft Word

  • 本文向大家介绍Android编程获取全局Context的方法,包括了Android编程获取全局Context的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程获取全局Context的方法。分享给大家供大家参考,具体如下: 有时,在处理业务逻辑的时候,需要Context对象,但在某些情况下,并非容易获取,这时就需要一些巧妙的手段来管理Context。 在Android中

  • 我认为有两种一般的方法可以通过BeanManager获取自动创建的CDI托管bean实例,当仅具有一个Bean时 > 通过,通常在代码段中显示: 通过,这在代码段中很少显示: 实际上,它们最终做了完全相同的事情:返回对当前CDI托管bean实例的代理引用,并在范围中不存在bean实例时自动创建该实例。 但是它们的做法有点不同:BeanManager#getReference()总是创建一个全新的代

  • 问题内容: 我正在使用SSH2。当我尝试通过设置属性时,这是正确的。但是,当我尝试使用获得相同的属性时,我什么也没有。 为什么?他们不一样吗? 当我使用时,我得到了这些: 似乎在休眠状态下进行会话。为什么? 问题答案: 是的,它们是不同的,在scriptlet中,您使用http会话隐式对象;在struts标签属性中,您引用通过OGNL检索的struts会话映射对象。您一无所获,只是因为它们与众不同