REACT组件:在单击第A页中的DIV时突出显示第B中的一个DIV
我正在尝试弄清楚以下内容:
如果:addCanvas按钮在dashboard.js(第一个网页)中单击;然后:默认情况下突出显示了Toppanel.js中的Canvasmenu div(第二页的子组件)。
单击dashboard.js中的AddCanvas,不仅将重定向到canvas.js(不同的父组件)。它还应该在toppanel.js(canvas.js的子组件)中突出显示Canvasmenu div。因此,它们是两个不同的网页,前者的动作应该对后者产生影响。
我已经从事IF-Else语句工作,但无济于事(目前似乎没有意义...)。
dashboard.js中的addcanvas div:
从“反应”中导入react; 导入“ ./dashboard.css”; 从“ ../ assets/icon_adddefault.png”导入Addicon; 从“ ../ Assets/icon_canvas.png”导入IconCanvas; 从“ react-router-dom”导入{link}; 功能仪表板(){ 返回( < div ID =“ dashboard”> < input className =“ searchcanvas” type =“ search”占位符=“搜索语音canvas”></input> <链接到=“/canvas”> < div className =“ addCanvas”> //单击时 < img className =“ addicon” src = {addicon}/> < p>新帆布</p> < img className =“ iconcanvas” src = {iconcanvas}></img> </div> </link> </div> ); }
toppanel.js中的canvasmenu div,我默认要突出显示:
从“反应”中导入react; 导入“ ./toppanel.css”; 类Toppanel扩展了React.comPonent { 构造函数(props){ 超级(道具); } 使成为() { 返回( < div ID =“ ToppanelStyle”> < div className =“ toptitle”></div> < div className =“ topmenu”> < div className =“ Canvasmenu” //这需要突出显示 </div> </div> ); } }
I am trying to figure out the following:
If : addCanvas button is clicked in Dashboard.js (first web page); then: canvasMenu div in TopPanel.js is highlighted by default (child component in second page).
Clicking addCanvas in Dashboard.js not only redirects to Canvas.js (a different parent component). It should also highlight canvasMenu div in TopPanel.js (child component to Canvas.js). So they are two different web pages, and the action in the former should have an effect on the latter.
I've worked on if-else statement but to no avail (seems doesn't make sense for now...).
addCanvas div in Dashboard.js:
import React from "react"; import "./Dashboard.css"; import AddIcon from "../assets/icon_AddDefault.png"; import IconCanvas from "../assets/icon_Canvas.png"; import { Link } from "react-router-dom"; function Dashboard() { return( <div id="dashboard"> <input className="searchCanvas" type="search" placeholder="Search speech canvas"></input> <Link to="/canvas"> <div className="addCanvas"> //when this is clicked <img className="addIcon" src={AddIcon}/> <p>New Canvas</p> <img className="iconCanvas" src={IconCanvas}></img> </div> </Link> </div> ); }
canvasMenu div in TopPanel.js below, which I want to highlight by default:
import React from "react"; import "./TopPanel.css"; class TopPanel extends React.Component { constructor(props) { super(props); } render() { return( <div id="topPanelStyle"> <div className="topTitle"></div> <div className="topMenu"> <div className="canvasMenu"><p>Canvas</p></div> //this needs to be highlighted </div> </div> ); } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在链接请参阅此问题&amp;解决方案。使用此设置的方式简单的解决方案是在创建Toppanel时添加一个Prop(属性):
或者
随后使用组合中的Ishighighlight opt prop:
其他方法是使用状态管理上下文提供者或类似 redux 或 Recoil 。使用上下文提供商&amp;像Usestate这样的挂钩将需要您更改为功能组件而不是类。国家管理是一个大主题&amp;如果选择API或挂钩作为解决方案,则应该找到很多教程。
You can pass the a parameter in the in the link see this question & solutions. The way you have this setup the easy solution is to add a prop (property) to when you create the TopPanel:
or
then use the isHighlighted prop in you Componet:
The other ways to do this are with state management Context Provider or an API like Redux or Recoil. Using a Context Provider & hooks like useState would require you change over to functional components instead of class. State management is a big topic & you should find plenty of tutorials if you pick an API or hooks as a solution.