Использовать компонент onClick

Я хочу, чтобы компонент с функцией оповещения активировался при нажатии кнопки в компоненте класса.

Мой функциональный компонент

import React from 'react'

export default function ConfirmationModal() {

    alert = () => {
        alert("whatsup hotdawg?")
    }

  return (
    <div>
        {this.alert()}
    </div>
  )
}

В компоненте класса

у меня есть эта строка, в которой я хотел бы вызвать метод оповещения в функциональном компоненте onClick

<button>"ClickMe" onClick=<ConfirmationModal/> </button>

Любые предложения о том, как я могу это сделать, будут высоко оценены.

Я не уверен, что понимаю требования, можно подробнее?

felixmosh 10.04.2019 09:36

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

Arasto 10.04.2019 09:40
Поведение ключевого слова "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) для оценки ваших знаний,...
1
2
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы можете сохранить часть состояния в своем родительском компоненте, например, isModalOpen, которому вы присваиваете значение true при нажатии на кнопку, и используйте этот фрагмент состояния для условного рендеринга ConfirmationModal.

Также рекомендуется не вызывать методы непосредственно при рендеринге, так как это будет происходить при каждом рендеринге. Вместо этого вы можете переместить оповещение на componentDidMount.

Пример

class ConfirmationModal extends React.Component {
  componentDidMount() {
    alert("whatsup hotdawg?");
  }

  render() {
    return <div>Modal</div>;
  }
}

class App extends React.Component {
  state = {
    isModalOpen: false
  };

  render() {
    return (
      <div>
        <button onClick = {() => this.setState({ isModalOpen: true })}>
          Click me
        </button>
        {this.state.isModalOpen && <ConfirmationModal />}
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id = "root"></div>

React - это библиотека на основе компонентов, поэтому добавьте свой компонент пользовательского интерфейса (кнопку) и связанную с ним логику в тот же компонент.

Измените свой функциональный компонент на следующий.

import React from 'react';

export default class ConfirmationModal extends React.Component {

    alert = () => {
        alert("whatsup hotdawg?")
    }
    render () {
        return (
            <button onClick = {this.alert}>"ClickMe"</button>
        )
    }
}

И в вашем компоненте класса импортируйте вышеуказанный компонент и используйте его. Ваш компонент класса должен выглядеть примерно так.

render(){
     return (
          <ConfirmationModal />
     )
}

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