首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅当变量具有特定值时才在Reactjs页中显示图像

仅当变量具有特定值时才在Reactjs页中显示图像
EN

Stack Overflow用户
提问于 2021-10-20 15:25:41
回答 1查看 36关注 0票数 0

我有下面的简单代码,它有一个小的单选按钮选择,它在表单的底部显示了两个图像。我希望此代码在加载时不显示任何图像,并根据在单选按钮选择中所做的选择,仅显示表示选择的单个图像。基本上是一个虚拟的if this.state.programmingmodel === 'event-driven' then <HoverImage src={longrunning} hoverSrc={longrunninghover} /> (对eventdriven也是一样的)。

我曾尝试将onSubmitForm语法添加到<HoverImage>部分,但没有真正奏效。我不认为我需要创建另一个“事件”,因为我想重用onSubmit事件。

代码语言:javascript
运行
复制
import React, { Component } from "react";
import "./index.css"

import HoverImage from "react-hover-image";
import longrunning from './longrunning.jpg';
import longrunninghover from './longrunninghover.jpg';
import eventdriven from './eventdriven.jpg';
import eventdrivenhover from './eventdrivenhover.jpg';

class App extends Component {
  constructor() {
    super();
    this.state = {
      programmingmodel: "long-running"
    };
  }

  onValChange = (event) => {
    this.setState({
      [event.target.name]: event.target.value,
    });
  };

  onCheckValChange = (e) => {
    this.setState({ [e.target.name]: e.target.checked });
  };

  onSubmitForm = (event) => {
    event.preventDefault();
    console.log("state", this.state);
  };

  render() {
    return (
      <div className="App">
        <h1>Containers product selection </h1>
        <form onSubmit={this.onSubmitForm}>
          <br/>
          <b> Programming model </b>
          <br/>
          <label>
            <input
              type="radio"
              name="programmingmodel"
              value="long-running"
              checked={this.state.programmingmodel === 'long-running'}
              onChange={this.onValChange}
            />
            <span>Long-running </span>
          </label>
          <label>
            <input
              type="radio"
              name="programmingmodel"
              value="event-driven"
              checked={this.state.programmingmodel === 'event-driven'}
              onChange={this.onValChange}
            />
            <span>Event-driven </span>
          </label>
          <br/>
          <button type="submit">Submit</button>
          <br/>
        </form>
        <br/>
        <HoverImage src={longrunning} hoverSrc={longrunninghover} />
        <br/>
        <HoverImage src={eventdriven} hoverSrc={eventdrivenhover} />
      </div>
    );
  }
}

export default App;
EN

回答 1

Stack Overflow用户

发布于 2021-10-20 15:39:12

您只需检查状态并决定呈现哪个组件。我已经删除了表单和一些未使用的代码,因为它不需要。

如下所示:

代码语言:javascript
运行
复制
class App extends React.Component {
  constructor() {
    super();
    this.state = {
      programmingmodel: "long-running"
    };
  }

  onValChange = (event) => {
    this.setState({
      [event.target.name]: event.target.value
    });
  };

  onCheckValChange = (e) => {
    this.setState({ [e.target.name]: e.target.checked });
  };

  render() {
    return (
      <div className="App">
        <h1>Containers product selection </h1>
        <b> Programming model </b>
        <br />
        <label>
          <input
            type="radio"
            name="programmingmodel"
            value="long-running"
            checked={this.state.programmingmodel === "long-running"}
            onChange={this.onValChange}
          />
          <span>Long-running </span>
        </label>
        <label>
          <input
            type="radio"
            name="programmingmodel"
            value="event-driven"
            checked={this.state.programmingmodel === "event-driven"}
            onChange={this.onValChange}
          />
          <span>Event-driven </span>
        </label>
        {this.state.programmingmodel === "long-running" ? (
          <HoverImage src={longrunning} hoverSrc={longrunninghover} />
        ) : (
          <HoverImage src={eventdriven} hoverSrc={eventdrivenhover} />
        )}
      </div>
    );
  }
}

关于加载状态,我会在父组件上这样做,不会混淆逻辑。

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

https://stackoverflow.com/questions/69648833

复制
相关文章

相似问题

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