Интерактивность содержимого

В коде осуществляется создание двух кнопок.

При нажатии на определённую кнопку на экране появляется определённая строка.

В файле index.js пишем код:

import React, {Component} from 'react';
import {render} from 'react-dom';

// описание констант
const MESSAGE_1 = "FIRST string";
const MESSAGE_2 = "SECOND string";
const MESSAGE_START = "IT IS START MESSAGE";

/**
 * класс
 * отвечает за контроль щелчков по кнопкам
 * отвечает за вывод определённой строки на экран
 */
class MyStringPrinter extends Component {
    /**
     * конструктор
     * @param props
     */
    constructor(props) {
        super(props);

        // задаём начальное состояние
        this.state = {
            stringFirst: MESSAGE_1,
            stringSecond: MESSAGE_2,
            stringResult: MESSAGE_START,
        };
    }

    /**
     * щелчок по первой кнопке
     */
    btnFirstClickMethod = ()  => {
        console.log("btn FIRST click");
        const resultStr = this.state.stringFirst;

        // изменяем состояние
        this.setState({
            stringFirst: MESSAGE_1,
            stringSecond: MESSAGE_2,
            stringResult: resultStr,
        });
    };

    /**
     * щелчок по второй кнопке
     */
    btnSecondClickMethod = () => {
        console.log("btn SECOND click");
        const resultStr = this.state.stringSecond;

        // изменяем состояние
        this.setState({
            stringFirst: MESSAGE_1,
            stringSecond: MESSAGE_2,
            stringResult: resultStr,
        });
    };

    /**
     * обязательный метод
     * осуществляет вывод разметки на экран
     * @returns {*}
     */
    render() {
        return (
            <div>
                <button onClick={this.btnFirstClickMethod}>Задать строку один</button>
                <br/>
                <br/>
                <button onClick={this.btnSecondClickMethod}>Задать строку два</button>
                <br/>
                <br/>
                <b>
                    {this.state.stringResult}
                </b>
            </div>
        )
    }
}

// главная функция
// осуществляет вывод всего содержимого на экран
function PrintMain() {
    return (
        <div>
            <MyStringPrinter/>
        </div>
    )
}

// выводим всё содержимое на экран
render(<PrintMain/>, document.getElementById('root'));

Запускаем приложение

Пишем в консоли:

npm start

Last updated

Was this helpful?