Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   React, useState (https://javascript.ru/forum/library-toolkit-framework/83869-react-usestate.html)

daniil4fun 08.04.2022 14:47

React, useState
 
Здравствуйте форумчане, начал изучать React. Дошел до состояний, и не могу понять одной (вероятнее всего элементарной) вещи. Есть код:

function App() {
const [value1, setValue1] = useState(0);
const [value2, setValue2] = useState(0);
const [result, setResult] = useState(0);

function handleChange1(event) {
setValue1(event.target.value);
}

function handleChange2(event) {
setValue2(event.target.value);
}

function handleClick() {
setResult(Number(value1) + Number(value2));
}

return <div>
<input value={value1} onChange={handleChange1} />
<input value={value2} onChange={handleChange2} />

<button onClick={handleClick}>btn</button>
<p>result: {result}</p>
</div>;

Подскажите, пожалуйста, зачем заводить const [result, setResult] = useState(0); Не проще было бы завести переменную Result, в которую бы попадал результат сложения введенных в инпуты чисел (const result = {Number(value1) + Number(value2)}? Объясните пожалуйста, может я что-то не понимаю? Заранее благодарен!

ksa 08.04.2022 20:05

Цитата:

Сообщение от daniil4fun
может я что-то не понимаю?

Тут кагбэ ты и прав и не прав одновременно... :D

Сама переменная и нафик не нужна. Можно использовать первые две переменные.
Но использовать, как ты предложил, так же не получится.
Цитата:

Сообщение от daniil4fun
const result = {Number(value1) + Number(value2)}

Куда ты это хочешь поместить?

ksa 09.04.2022 09:40

daniil4fun, и учись делать полные тестовые примеры. А так же правильно их на форуме оформлять. ;)

import React, {useState} from 'react';
import ReactDOM from 'react-dom';
//import './index.css';

function App() {
	const [value1, setValue1] = useState(0);
	const [value2, setValue2] = useState(0);
	const [result, setResult] = useState(0);
	
	function handleChange1(event) {
		setValue1(event.target.value);
	}
	
	function handleChange2(event) {
		setValue2(event.target.value);
	}
	
	function handleClick() {
		setResult(Number(value1) + Number(value2));
	}
	
	return (
		<div>
			<input value={value1} onChange={handleChange1} />
			<input value={value2} onChange={handleChange2} />
			
			<button onClick={handleClick}>btn</button>
			<p>result: {result}</p>
		</div>
	)
}


ReactDOM.render(
	<App />,
	document.getElementById('root')
);

рони 09.04.2022 11:12

daniil4fun,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.


Часовой пояс GMT +3, время: 14:29.