如何通过 React Context 传递多个参数(从消费者到提供者)?

Posted

技术标签:

【中文标题】如何通过 React Context 传递多个参数(从消费者到提供者)?【英文标题】:How to pass multiple arguments through React Context (from Consumer to Provider)? 【发布时间】:2019-11-23 13:45:09 【问题描述】:

我正在使用 create-react-app 创建一个简单的应用程序

并且正在探索使用React Context API 将少量内容从一个组件传递到另一个组件。

Spice.js

const spiceList = [
  
    id: 1,
    title: 'Spice 11',
    name: require('./images/spice1.jpeg')
  ,
  
    id: 2,
    title: 'Spice 22',
    name: require('./images/spice2.jpeg')
  

];

return (
  <div>
    <h1>Welcome to Spices</h1>

 <SpiceContext.Provider value='Masala' imgSrc=img3>
    <SpiceList/>
 </SpiceContext.Provider>
    </div>
  </div>
);

导出默认 Spice;

SpiceList 中的消费者 我计划在其中检索多个属性而不是单个值属性。

如何做到这一点?谢谢

<>
                    <h1>props.title</h1>
                    <SpiceContext.Consumer>
                      spiceContext=> <img src=spiceContext.value alt=spiceContext.title/>
                      
                    </SpiceContext.Consumer>
      </>

SpiceContext

import React from 'react';

const SpiceContext = React.createContext(null);

导出默认 SpiceContext;

【问题讨论】:

【参考方案1】:

首先创建要共享的对象。

const myOptions = [
  
    key: 1,
    title: 'Title',
    other: 'other',
  ,
  
    key: 2,
    title: 'Title',
    other: 'other',
  
];  

然后传下去。

return (
      <div>
        <h1>Welcome to Spices</h1>

     <SpiceContext.Provider value=myOptions imgSrc=img3>
        <SpiceList/>
     </SpiceContext.Provider>
        </div>
      </div>
    );

那么你会以同样的方式收到:

<h1>props.title</h1>
<SpiceContext.Consumer>
  (options) => (
    <>
      options.map((option) => (
        <img key=option.key src=option.other alt=option.title/>
      ))
    </>
  )
</SpiceContext.Consumer>

【讨论】:

在我的例子中,myOptions 是一个对象数组。请在这种情况下提出建议。 如果你有一个要传递的列表,我想你会 .map 这个列表并渲染一个 的列表?

以上是关于如何通过 React Context 传递多个参数(从消费者到提供者)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用react将多个参数作为url中的对象传递

React 库中的 context 和 updater 参数是啥?

React Native Context,如何在多个嵌套文件和组件之间共享上下文

React Context用法总结

React Context 详细介绍(状态共享数据传递)

React使用context进行组件通信