Я беру значение на входе, но в результате я хочу добавить «+» 10% к результату, т.е. если человек вводит 1000, а 10% от 1000 равно 100, а общий результат будет 1100. Я использую «+», но он объединяет значение вместо добавления
function app() {
const [price, setPrice] = useState(0);
return (
<div>
<label>Price</label>
<input
type = "number"
value = {price}
onChange = {e => setPrice(e.target.value)}
/>
<div>{price + (10 / 100) * price}</div>
</div>
);
}
Как я могу добавить эти два значения
Вы можете попробовать это - <div>{Number(price) * 1.1}</div>
Используйте число, чтобы не устанавливать цену в виде строки:
function app(){
const [price,setPrice]=useState(0);
return(
<div>
<label>Price</label>
<input
type='number'
value = {price}
onChange = {(e)=> setPrice(Number(e.target.value))}
</div>
{price + (10/100)*price}
/>
}
Однако остерегайтесь NaN.
Все, что вам нужно сделать, это добавить знак плюс +
перед e.target.value
, чтобы преобразовать его в число:
function app() {
const [price, setPrice] = useState(0);
return (
<div>
<label>Price</label>
<input type = "number" value = {price} onChange = {(e) => setPrice(+e.target.value)} />
{price + (10 / 100) * price}
</div>
);
}
Вы можете использовать parseInt для преобразования строки в число в JavaScript. Проблема в вашем скрипте, вы добавляете 2 строки значений и число.
function app() {
const [price, setPrice] = useState(0);
return (
<div>
<label>Price</label>
<input
type = "number"
value = {price}
onChange = {e => setPrice(e.target.value)}
/>
<div>{(parseInt(price) + (10 / 100)) * parseInt(price)}</div>
</div>
);
}
<input>
значения — это строки, а не числа. Для добавления вам нужно преобразовать строку в число