Context 提供了一个无需为每层组件手动添加 props,就能在组件树间进行数据传递的方法。

    src/context/searchContext.js

    1. import React from 'react'
    2. const SearchContext = React.createContext()
    3. export default SearchContext

    src/context/index.js

    1. import React from 'react'
    2. import SearchContext from './searchContext'
    3. import Search from './search'
    4. import Lists from './lists'
    5. const Index = () => {
    6. const [text, setText] = useState('')
    7. const [lists, setLists] = useState([])
    8. const handleDispatch = (action) => {
    9. switch (action.type) {
    10. case 'TEXT':
    11. return setText(action.payload)
    12. case 'LISTS':
    13. return setLists(action.payload)
    14. default:
    15. break
    16. }
    17. }
    18. return (
    19. <div>
    20. {/* 生产组件 ,其中的value 是可以自定义的*/}
    21. <SearchContext.Provider
    22. value={{
    23. text,
    24. setTextlists,
    25. setLists,
    26. dispatch: handleDispatch,
    27. }}
    28. >
    29. {/* 这里面的叫消费组件,订阅了provider里面的属性,
    30. 如果里面的属性发生变化,那么该属性相关的消费组件就会被重新渲染 */}
    31. <Search />
    32. <Lists />
    33. </SearchContext.Provider>
    34. </div>
    35. )
    36. }
    37. export default Index