Отображение компонента реакции при нажатии

Я попытался найти это в Google и найти переполнение стека, но ни один из них, похоже, не помог с моим решением. Пытаюсь настроить две кнопки. При щелчке по каждому из них я хочу, чтобы он отображал соответствующий компонент. Вот что я сейчас делаю, чтобы изменить состояние.

import React, { Component } from 'react';
import Structured from '../Structured/Structured';
import YC from '../YC/YC';

class Home extends Component {
constructor() {
  super();
  this.state = {
    YC: false,
    Structured: false
  }
}

ycClick() {
    this.setState({
      YC: true,
      Structured: false
    });
  }


structuredClick() {
    this.setState({
      Structured: true,
      YC: false
    });
  }


render() {
  const { isSignedIn, route } = this.state;
  return (
    <div>
    <h1>Rick's Notes</h1>
    <div class = "ph3">
        <a class = "f6 link dim br-pill ph3 pv2 mb2 dib white bg-black pa2 ma2" href = "#0" onClick = {this.ycClick}>YC vs. Non. YC</a>
        {this.state.YC ? <YC /> : null}
        <a class = "f6 link dim br-pill ph3 pv2 mb2 dib white bg-black pa2 ma2" href = "#0" onClick = {this.structuredClick}>Structured Note Descriptions</a>
        {this.state.Structured ? <Structured /> : null}
    </div>
    </div>
  );
}
}

export default Home;

Я пытаюсь сделать так, чтобы при щелчке YC (или структурированном) было установлено значение true, и если this.state.yc истинно, он возвращает компонент. Однако он говорит, что это не определено, поэтому они должны быть проблемой с тем, как я вызываю компонент. Спасибо за любую помощь. Дайте мне знать, если я еще что-нибудь скажу.

Что именно там говорится, не определено? Вы можете опубликовать сообщение об ошибке?

joshuakcockrell 14.06.2018 19:51

вы можете показать код структурированного компонента / YC?

Priyesh Kumar 14.06.2018 19:51

Вы должны привязать ycClick() к правильному this. Например в ctor: this.ycClick = this.ycClick.bind(this);

Adriano Repetti 14.06.2018 19:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте this.ycClick.bind(this) вместо this.ycClick (то же самое с this.structuredClick)

Привет, я попытался запустить это и получил «TypeError: this.state не является функцией» в функции ycClick.

charles 14.06.2018 20:08

Обновите свой обработчик этим

ycClick = () => {
    this.setState({
      YC: true,
      Structured: false
    });
  }


structuredClick = () => {
    this.setState({
      Structured: true,
      YC: false
    });
  }

Другие вопросы по теме