function ClickButton(props) {
let state = "off"
function press(props) {
state === "off" ? "on" : "off";
}
return {props.label}
}
ReactDOM.createRoot(document.getElementById("app")).render(
);
Но класс не обновляется почему то, подскажите что я сделал не так. Заранее спасибо!
JavaScript
Как обратится к классу элемента в react?
Хочу сделать кнопку чтобы при клике переключался класс. Вот что я написал:
Проблема в том, что вы не обновляете состояние переменной state, а только меняете её значение. Для обновления состояния в React используется функция setState(). Вот как можно исправить ваш код:
function ClickButton(props) {
const [state, setState] = React.useState("off");
function press() {
setState(state === "off" ? "on" : "off");
}
return <button className={state} onClick={press}>{props.label}</button>;
}
ReactDOM.createRoot(document.getElementById("app")).render(
<ClickButton label={"Нажми"} />
);
Здесь мы используем хук useState для создания переменной состояния state и функции setState для её обновления. В функции press мы обновляем состояние, проверяя текущее значение state и меняя его на противоположное. Затем мы передаем значение state в атрибут className кнопки.
function ClickButton(props) {
const [state, setState] = React.useState("off");
function press() {
setState(state === "off" ? "on" : "off");
}
return <button className={state} onClick={press}>{props.label}</button>;
}
ReactDOM.createRoot(document.getElementById("app")).render(
<ClickButton label={"Нажми"} />
);
Здесь мы используем хук useState для создания переменной состояния state и функции setState для её обновления. В функции press мы обновляем состояние, проверяя текущее значение state и меняя его на противоположное. Затем мы передаем значение state в атрибут className кнопки.
Юра Гудков
Значит все таки без хуков никак. Спасибо за ответ!
Хрен его знает, как оно обратится. А тебе-то что?
Юра Гудков
Да так, интересно
Для того, чтобы изменить класс элемента в React, вам нужно использовать состояние (state). В вашем коде состояние не используется правильно, поэтому класс не меняется. Вот исправленный код:
----------------------------------------------------------
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
function ClickButton(props) {
const [state, setState] = useState('off');
function press() {
setState(state === 'off' ? 'on' : 'off');
}
return (
<button className={state} onClick={press}>
{props.label}
</button>
);
}
ReactDOM.createRoot(document.getElementById('app')).render(
<ClickButton label={'Нажми'} />
);
----------------------------------------------------------
Здесь используется хук useState, который позволяет определить состояние компонента и функцию setState для изменения состояния. При клике на кнопку вызывается функция press, которая изменяет состояние на противоположное значение. Класс кнопки зависит от значения состояния.
----------------------------------------------------------
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
function ClickButton(props) {
const [state, setState] = useState('off');
function press() {
setState(state === 'off' ? 'on' : 'off');
}
return (
<button className={state} onClick={press}>
{props.label}
</button>
);
}
ReactDOM.createRoot(document.getElementById('app')).render(
<ClickButton label={'Нажми'} />
);
----------------------------------------------------------
Здесь используется хук useState, который позволяет определить состояние компонента и функцию setState для изменения состояния. При клике на кнопку вызывается функция press, которая изменяет состояние на противоположное значение. Класс кнопки зависит от значения состояния.
Похожие вопросы
- React/Vue что учить дальше?
- Чем react.js отличается от javascript?
- За чем вообще использовать React?
- Что нужно знать перед изучением React.js 2020?
- Что легче изучать - React или Angular 2?
- чем отличаются фреймворки JQuerry, Angular, React, что лучше для каких задач и что из них вы больше предпочитаете?
- разработчики на React есть? имеется концептуальный вопрос
- Что лучше React или Vue?
- Какие проекты можно создать на react без backend-а? Можно ли создать что-нибудь серьезное?
- Здравствуйте. Изучаю javascript, посоветуйте, какой фреймворк лучше всего выбрать для изучения (angular, vue, react)?