react useContext 用法

1 创建createContext

import React, { useContext, useEffect, useState } from 'react'

const GlobalContext = React.createContext()

GlobalContext 作为提供者

export default function App(){

  const [filmList,setfilmList] = useState([]);

  const [info,setinfo] = useState('');

  useEffect(()=>{

    return()=>{

      axios.get(`/maizuo.json`).then(res=>{

        setfilmList(res.data)

      })

    }

  },[])

  return (

//GlobalContext 作为提供者

    <GlobalContext.Provider value={{

      call:'打电话',

      sms:'短信服务',

      info:info,

      changeInfo:(value)=>{

        setinfo(value)

      }

    }}>

      <div>

        {

          filmList.map(item=>

            <FilmItem key={item.filmId} {...item}></FilmItem>

          )

        }

        <FileDetail></FileDetail>

      </div>

    </GlobalContext.Provider>

  )

}

3 通过 useContext(GlobalContext) 可以直接只用提供者属性和方法

function FilmItem(props){

  let { name, poster, grade,synopsis } = props;

  const value = useContext(GlobalContext)

  console.log(value,'--------123')

  return <div onClick={()=>{

//使用提供者方法

    value.changeInfo(synopsis)

   }}>

    <h4>{name} </h4>

    <div style={{display:'flex',alignItems:'center'}}>

     

      <div>观众评分: {grade} </div>

      <img src={poster} style={{width:'50px',height:'50px;',marginLeft:'10px'}} alt='alt'></img>

    </div>

  </div>

}

function FileDetail(){

  const value = useContext(GlobalContext);

  return <div className='filedetail'>

//使用提供者属性

  detail=== { value.call } == { value.info }

</div>

}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例: 首先,我们需要创建一个 Context 对象,可以在任何地方访问它。例如: ``` import React from "react"; const ThemeContext = React.createContext("light"); export default ThemeContext; ``` 在这个例子,我们创建了一个名为 ThemeContextContext 对象,并将其默认值设置为 "light"。 接下来,我们需要在应用程序的某个地方提供所创建的 Context 对象。例如: ``` import React from "react"; import ThemeContext from "./ThemeContext"; function App() { return ( <ThemeContext.Provider value="dark"> { /* 在这里渲染子组件 */ } </ThemeContext.Provider> ); } export default App; ``` 在这个例子,我们在 App 组件提供了 ThemeContext.Provider,并将其值设置为 "dark"。这意味着在主题上下文,所有子组件都可以访问到的值为 "dark"。 现在我们可以在应用程序的任何地方消费 ThemeContext。例如: ``` import React, { useContext } from "react"; import ThemeContext from "./ThemeContext"; function MyComponent() { const theme = useContext(ThemeContext); return ( <div className={`my-component ${theme}`}> { /* 渲染组件内容 */ } </div> ); } export default MyComponent; ``` 在这个例子,我们使用 useContext 钩子从主题上下文获取当前主题的值,并将其应用于组件的类名。 这就是使用 useContext 钩子的基本流程。当然,在实际应用可能会有更复杂的用法,但是这个示例应该足以让你理解如何使用 useContext 钩子。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值