首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用来自另一个组件的状态?

如何使用来自另一个组件的状态?
EN

Stack Overflow用户
提问于 2022-01-20 06:34:47
回答 1查看 54关注 0票数 0

我对编程很陌生,我试着学会反应和动手-一些真正的项目。我正在尝试整理一个FreeCodeCamp鼓机程序,我被困在尝试使用一个从一个组件到另一个组件的状态。谢谢你们的帮助。

请参阅下面的源组件:

代码语言:javascript
复制
import React,{useState} from 'react';
import './DrumControl.scss';
import { Switch } from 'antd';
import 'antd/dist/antd.css';

const DrumControl = () => {
  const [isOn,setIsOn] = useState(false);
  const [bankName,setBankName] = useState("Heater 1");
  const [info,setInfo] = useState("");
  const onOff = () =>{
    isOn ? setIsOn(false) : setIsOn(true);
    setInfo("");
  }

  const changeBankName = ()=>{
      bankName === "Heater 1" ? setBankName("Piano") : setBankName("Heater 1");
      setInfo(bankName);
  }

  console.log(info);
  return (
    <div className="drum-control">
      <header>
        <a className="navbar-brand text-dark" href="#">
        ABC
        </a>
      </header>
      <p className="text-dark fw-bold">Power</p>
      <Switch onClick={onOff}/>
      <p id="display">{info}</p>

      <input type="range" className="form-range" min="0" max="100" id="volume-control"/>

      <p className="text-dark fw-bold">Bank</p>
      <Switch onClick={changeBankName}/>
    </div>
  );
}

export default DrumControl;

我试图在以下组件中使用上面代码中的bankName

代码语言:javascript
复制
import React,{useState} from 'react';
import {bankOne,bankTwo} from './Bank.js';
import {bankName} from './DrumControl';

const Drumpad = () =>{
  const [bank,setBank] = useState(bankOne);
  const changeBank = () =>{
    bankName === "Heater 1" ? setBank(bankOne) : setBank(bankTwo);
  }
  return(
    <h1 className="drum-pad">{bankOne[0].id}</h1>

  );
}

export default Drumpad;

不管怎么说还是换个办法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-01-22 06:08:39

好的,现在全部排序,导入pubhub.js

https://www.npmjs.com/package/pubsub-js

鼓手出版社

代码语言:javascript
复制
  const pubsub = () =>{
    PubSub.publish('changeBank',{bankName})
  }

订阅鼓垫

代码语言:javascript
复制
  useEffect(
    ()=>{
      const mySub = PubSub.subscribe('changeBank',chooseBank);
      return () => {
        PubSub.unsubscribe(mySub);
      };
    },[]
  );

  const chooseBank = (changeBank,{bankName}) => {
    bankName === 'Heater 1' ? setBank(bankOne) : setBank(bankTwo);
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70781731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档