context基本使用

这篇博客介绍了如何在React应用中利用Context API进行跨组件的状态管理。首先,创建了一个Context并导出。然后在父组件中导入并用Provider包裹子组件,通过value属性传递数据。子组件可以通过两种方式接收数据:一是使用Consumer组件;二是通过设置contextType静态属性直接访问。这种方式避免了props逐级传递,提高了代码的可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.context.js

作为文件之间传递的一个中间的文件,可以简单的理解为交互的文件

先要生成一个context 并且导出供组件使用

import react from 'react'
​
const Context = react.createContext()
​
export default Context;

2.父组件

  • 在父组件中导入创建好的context.js

  • 给需要数据的子组件用<context.Provider value={{name:'feifei'}}></ context.Provider> 包裹

  • 并且通过value传值

import React, { Component } from 'react';
import context from './../../context/index'
import Son from './son.js'
​
class Father extends Component {
    state = {
        data:'1111'
    }
    updateName= ()=>{
        this.setState({data:'feifei'})
    }
    render() {
        return (
            <div onClick={this.updateName}>
                这是父组件{this.state.data}
                <context.Provider value={{name:this.state.data}}>
                    <Son></Son>
                </context.Provider>
            </div>
        );
    }
}
​
export default Father;

3.子组件(方式一)

  • 在子组件中也需要导入创建好的context.js

  • 并且在需要的子组件中用context.属性获取数据

  • 在子组件中要用回调的方式接收数据

  • 中间不管经过多个组件只要是子组件都可以使用Consumer包裹接收数据

    import React, { Component } from 'react';
    import context from './../../context/index.js'
    ​
    class Son extends Component {
        render() {
            return (
              <context.Consumer>
                {context => {
                  return (
                    <div>
                      name:{context.name}
                    </div>
                  )
                }}
              </context.Consumer>
            );
          }
        }
    ​
    ​
    export default Son;

    4.子组件(方式二)

    子组件也可以采用另外一种方式获取context上的数据

        使用contextType的方式

import React, { Component } from 'react';
import context from './../../context/index.js'

class Son1 extends Component {
    static contextType = context;
    render() {
        return (
            <div>这是son1{this.context.name}</div>
        )
      }
    }


export default Son1;

### Model Context Protocols 的使用方法与应用场景 Model Context Protocols 是一种抽象的概念,通常用于描述模型上下文中协议的设计方式及其在不同场景中的实际应用。以下是关于其使用方法和具体应用示例的详细介绍。 #### 使用方法 Model Context Protocols 主要涉及定义一组接口或行为约束,以便不同的实现能够遵循统一的标准并协同工作。以下是一个简单的 Python 示例来展示如何设计和使用这些协议: ```python from abc import ABC, abstractmethod class ModelContextProtocol(ABC): """ 定义一个通用的模型上下文协议 """ @abstractmethod def prepare_context(self) -> dict: """ 准备模型所需的上下文数据 """ pass @abstractmethod def execute_model(self, input_data: dict) -> str: """ 执行模型逻辑并返回结果 """ pass class ConcreteModelA(ModelContextProtocol): """ 实现 A 类型的具体模型 """ def prepare_context(self) -> dict: return {"data": "context_for_A"} def execute_model(self, input_data: dict) -> str: return f"Result from Model A with data: {input_data}" class ConcreteModelB(ModelContextProtocol): """ 实现 B 类型的具体模型 """ def prepare_context(self) -> dict: return {"data": "context_for_B"} def execute_model(self, input_data: dict) -> str: return f"Result from Model B with data: {input_data}" ``` 通过上述代码可以看出,`ModelContextProtocol` 提供了一个标准框架,使得 `ConcreteModelA` 和 `ConcreteModelB` 能够按照一致的方式准备上下文以及执行模型操作[^1]。 #### 具体应用场景 1. **多模型集成环境下的标准化** 在需要支持多种机器学习或深度学习模型的应用程序中,可以通过定义类似的 Protocol 来确保每种模型都能以相同的方式处理输入输出。这有助于减少耦合度,并提高系统的可维护性和扩展性。 2. **异步并发控制** 当涉及到复杂的 UI 更新或者后台任务调度时(如 Swift 中提到的例子),可以利用特定的修饰符(例如 `@preconcurrency`, `@MainActor`)来管理线程安全问题,从而简化开发流程[^2]。 3. **API 请求生成器优化** 对于 RESTful API 开发者来说,在某些情况下可能只需要获取单一响应而非流式传输全部内容,则可以根据需求调整请求参数设置 (e.g., `"stream": false`) ,进而提升性能表现[^3]。 以上便是有关 model context protocols 的基本介绍及其潜在用途说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值