【问题标题】:reactJS hooks asx Changing the style parameters for a div when it is clickedreactJS hooks asx 在单击时更改 div 的样式参数
【发布时间】:2020-09-27 04:58:22
【问题描述】:

我有几个具有唯一 ID 并共享相同类名的元素。当用户单击其中一个元素时,我想更改背景和文本颜色以及字体。

我创建了两个变量(Style1、Style2)来保存普通元素和点击元素的样式。 Style1 用于被点击的元素。

const tileStyle1: CSS.Properties = {
    backgroundColor: 'blue',
    fontFamily: 'londrinaBlackRegular',
    color: 'yellow',
  };  

  const tileStyle2: CSS.Properties = {
    fontFamily: 'londrinaSketcheRegular'}; 

我为所有元素创建了第三个变量 tileStyle,它嵌入在 HTML 中。示例:

<div className="linkcontainer" ID="Tile3" style={tileStyle} onClick={handleClick}>Marketing</div>

<div className="linkcontainer" ID="Tile4" style={tileStyle} onClick={handleClick}>Support</div>

我想用三元运算符为每个元素设置 tileStyle:

{clickedTile = "Tile3" ? tileStyle = tileStyle1 : tileStyle = tileStyle2;}
<div className="linkcontainer" ID="Tile3" style={tileStyle} onClick={handleClick}>Support</div>

{clickedTile = "Tile4" ? tileStyle = tileStyle1 : tileStyle = tileStyle2;}

<div className="linkcontainer" ID="Tile4" style={tileStyle} onClick={handleClick}>Support</div>

但看起来这些不是通常方式的对象,这会产生一个很大的错误:对象作为 React 子级无效(找到:带键的对象{fontFamily})...

【问题讨论】:

    标签: html css reactjs jsx


    【解决方案1】:

    你不能在 return 方法中进行变量赋值,因为 React 会尝试渲染它。但是,您可以在分配样式道具本身时这样做,您将您的三元表达式放在其中(因为 {} 内的代码被评估为普通的 JS 表达式),您返回字典。

    <div className="linkcontainer" ID="Tile3" style={clickedTile === "Tile3" ? tileStyle1 : tileStyle2} onClick={handleClick}>Support</div>
    
    <div className="linkcontainer" ID="Tile4" style={clickedTile === "Tile4" ? tileStyle1 : tileStyle2} onClick={handleClick}>Support</div>
    

    【讨论】:

    • 这看起来很有希望,但我在“===”上收到编译时错误:[解析错误:意外的令牌,预期的“,”]
      支持
      --------------- -------- -------- ^
    • @SunbeamRapier 代码已修复,有额外的大括号...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2015-11-08
    • 2019-05-09
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多