首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在两个组件之间传递对象和状态

如何在两个组件之间传递对象和状态
EN

Stack Overflow用户
提问于 2021-01-26 17:20:02
回答 1查看 535关注 0票数 3

我想将API接收的对象的值从一个组件移动到另一个组件。我想使用"countryInfo.todayCases"内部的SubCard组件在App.js文件中作为支柱。例如,它在App.js <SubCard title="Cases" cases={countryInfo.todayCases} total={2000} />中写到,但我无法从Header.js访问这些信息。我搜索了所有地方,找不到和我的情况类似的东西。我们非常感谢你的帮助。

App.js

代码语言:javascript
运行
AI代码解释
复制
import Header from "./components/Header";
import SubCard from "./components/SubCard";

function App() {
  return (
    <div className="app">
      <div className="app__left">
        <Header />
        <div className="app__stats">
          <SubCard title="Cases" cases={_cases} total={2000} />

          <SubCard title="Recovered" cases={4000} total={2000} />

          <SubCard title="Deaths" cases={4000} total={2000} />
        </div>
        <Map />
      </div>

      <div className="app__right_bar">
        <SideBar />
        {/* Graph */}
      </div>
    </div>
  );
}

export default App;

Header.js

代码语言:javascript
运行
AI代码解释
复制
function Header({ _cases, _recovered, _deaths }) {
  const [countries, setCountries] = useState([]);
  const [country, setCountry] = useState("worldwide");
  const [countryInfo, setCountryInfo] = useState({});

  const _cases = countryInfo.todayCases;
  const _recovered = countryInfo.todayRecovered;
  const _deaths = countryInfo.todayDeaths;
  useEffect(() => {
    // async -> send a request, wait for it and do something

    const getCountriesData = async () => {
      await fetch(`${COUNTRIES_URL}`)
        .then((response) => response.json())
        .then((data) => {
          const countries = data.map((country) => ({
            name: country.country, //country name ex United Kingdom
            value: country.countryInfo.iso2, // country code ex: UK
          }));
          setCountries(countries);
        });
    };
    getCountriesData();
  }, []);

  const onCountryChange = async (event) => {
    const countryCode = event.target.value;
    setCountry(countryCode);

    const url =
      countryCode === "worldwide"
        ? WORLDWIDE_URL
        : `${COUNTRIES_URL}/${countryCode}`;

    await fetch(url)
      .then((response) => response.json())
      .then((data) => {
        setCountry(countryCode);
        setCountryInfo(data);
      });
  };
  console.log("Country info here >>>", countryInfo);

  return (
    <div className="app__header">
      <h1>Covid 19 tracker</h1>
      <FormControl className="app__dropdown">
        <Select variant="outlined" onChange={onCountryChange} value={country}>
          <MenuItem value="worldwide">Worldwide</MenuItem>
          {countries.map((country) => (
            <MenuItem value={country.value}>{country.name}</MenuItem>
          ))}
        </Select>
      </FormControl>
    </div>
  );
}

export default Header;

SubCard.js

代码语言:javascript
运行
AI代码解释
复制
function SubCard({ title, cases, total }) {
  return (
    <div>
      <Card className="sub_card">
        <CardContent>
          {/*Title */}
          <Typography color="primary">{title}</Typography>

          {/*Number of Cases */}
          <h2 className="card_cases">{cases}</h2>

          {/*Total */}
          <Typography className="card_total" color="textSecondary">
            {total} Total
          </Typography>
        </CardContent>
      </Card>
    </div>
  );
}

export default SubCard;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 17:46:02

看来应用程序调用标头和子卡

代码语言:javascript
运行
AI代码解释
复制
       /-> Header
App -> 
       \-> SubCard

为了让道具通过每个组件,有三个选项:

将共享数据移动到父级

如果将共享数据移动到父级(App),则可以将该数据作为支持与两个子级共享。

父母>孩子> GrandChild

更改组件,以便数据通过来自父>子> GrandChild的道具向下流动。那么组件的顺序将是

App ->标头-> SubCard

反应语境

您可以使用反应语境创建一个全局变量,以便在组件之间共享。

使用这三个选项中的任何一个,您都需要重新平衡代码在组件之间的布局方式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65911606

复制
相关文章
各组件之间的参数传递
通过子组件的props部分,来指明可以接受的参数,父组件通过在标签中写明参数的键值对来传递参数。
Swingz
2020/12/18
9650
各组件之间的参数传递
开发 | 如何在小程序页面之间,传递数据和变量?
最近组里开发小程序,遇到了一个困扰前端很长时间的话题:页面之间,如何传递数据和变量?
知晓君
2018/08/01
1.1K0
开发 | 如何在小程序页面之间,传递数据和变量?
ajax与后台之间传递多个对象方法
如果是需要通过ajax传递数组给后台,可以使用JSON.stringify()函数将JS数组转为json字符串,然后后台通过@RequestBody注解修饰,将前台传来的json字符串转为对应的参数类型。 前台
六月丶
2022/12/26
3.1K0
Hibernate对象状态之间的神奇转换
在Hibernate框架中,为了管理持久化类,Hibernate将其分为了三个状态:
wangweijun
2020/02/14
8190
Vue组件通信实践:兄弟组件之间的数据传递
兄弟组件之间的通信通常通过它们共同的父组件来实现。兄弟组件通过将数据传递给父组件,再由父组件将数据传递给另一个兄弟组件来完成通信。这一过程中,使用Vue的自定义事件机制能够很好地协调不同组件之间的数据传递。
用户10781437
2023/10/10
1.1K0
linux和windows之间传递文件
依赖于pscp文件,而windows系统下,一般没有安装。所以,需要先安装pscp应用程序。 pscp 下载pscp 放入windows的system32 文件夹下; 传送文件 windows从ubuntu服务器下载文件 背景一:假设要将ubuntu服务器下的/home/fresh/finalproject.tar下载windows下E:盘下,假设linux机器的端口是22,用户名是:fresh; 解决方法: 在Windows的cmd中输入 pscp -P 22 fresh@serverIP:/ho
用户1631856
2018/07/03
1.7K0
c#进程之间对象传递方法
KV项目下载底层重构升级决定采用独立进程进行Media下载处理,以能做到模块复用之目的,因此涉及到了独立进程间的数据传递问题。
zls365
2021/01/13
7440
c#进程之间对象传递方法
有状态和无状态组件
组件是自我维持的、独立的微实体,其描述了UI的一部分,可以将应用程序的UI拆分为较小的组件,其中每个组件都有自己的代码、结构和API,简单来说组件允许你将UI拆分为独立可复用的代码片段,并对每个片段进行独立构思。
WindRunnerMax
2021/01/05
1.1K0
react子组件向父组件传递数据_react子组件改变父组件的状态
本博客代码是 React 父组件和子组件相互传值的 demo;实现封装一个折线图,折线图选择下拉框,获取下拉框点击的值并且传给父组件根据下拉框筛选的条件更新视图;效果图如下:
全栈程序员站长
2022/10/03
3.6K0
react子组件向父组件传递数据_react子组件改变父组件的状态
Message和handler传递对象
Bundle可以传递对象,message又可以传递Bundle于是就可以利用buddle作为中间载体传递对象了 Message msg = Message.obtain(); Bundle b = new Bundle(); b.putParcelable("MyObject", (Parcelable) object); msg.setData(b); handler.sendMessage(msg); public void handleMessage(Message msg) {
欢醉
2018/01/22
1.4K0
有状态和无状态对象
这个概念在多线程中一直被提及,实际上很简单。 1.有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。
潇洒
2019/07/02
1.2K0
js jquery 实现html页面之间参数传递(单一参数、对象参数传递)
最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递。------jstarseven 、菜鸡的自我修养.
大道七哥
2019/09/10
7.2K0
vue父子组件传值方法_vue父组件向子组件传递对象
<子组件名称 v-bind: 子组件中的props=”父组件中的data”></子组件名称>
全栈程序员站长
2022/10/04
2.1K0
React的无状态和有状态组件
众所周知,React是一个专注于View层的前端框架,组件也】是React核心理念之一,一个完整的应用将由一个个独立的组件拼装而成,组件也是React最基础的一部分,学习React就需要先学习组件。
xiangzhihong
2022/11/30
1.5K0
Activity之间传递参数
发送 intent.setClass(Bmi.this, Report.class); Bundle bundle = new Bundle(); bundle.putString("KEY_HEIGHT", field_height.getText().toString()); bundle.putString("KEY_WEIGHT", field_weight.getText().toString()); intent.putExtras(bundle); startActivity(intent);
用户1075292
2018/01/23
5980
微信小程序--页面与组件之间如何进行信息传递和函数调用
​ 想要配置一个监听器用来监听页面中数据list的变化,组件在页面中的写法如下:
Kindear
2020/12/31
2.2K0
子组件传对象给父组件_react子组件改变父组件的状态
sendData = () => { let data = ‘1234’; this.props.getData(data); //这个this,props.xxx 后面的xxx是是在父组件那使用的名字; }, 然后可以在render函数后使用这个方法或者另外定义一个事件去触发该方法进行传值,
全栈程序员站长
2022/10/04
2.8K0
React技巧6(TodoList实现2组件之间传递数据)
本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1.React 技巧1(状态组件与无状态组件的使用) ----2018.01.04 2.React 技巧2(避免无意义的父节点)----2018.01.05 3.React 技巧3(如何优雅的渲染一个List)----2018.01.06 4.React 技巧4(如何处理List里面的Item)----2018.01.07 5.React 技巧5(TodoList实现)----2018.01.08 6.Re
前端人人
2018/04/11
1.5K0
React技巧6(TodoList实现2组件之间传递数据)
React技巧之将对象作为props传递给组件
原文链接:https://bobbyhadz.com/blog/react-typescript-pass-object-as-props[1]
chuckQu
2022/08/19
1.2K0
点击加载更多

相似问题

如何在组件之间传递状态?

12

如何在组件之间传递状态?

53

两个组件之间的传递状态

10

如何在功能组件之间传递状态?

30

如何在组件之间传递状态/道具

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文