#html #reactjs #react-hooks
Вопрос:
Так что у меня есть два занятия. Мой основной класс называется InputClear. Он предназначен для удержания подкомпонента и кнопки для очистки. Первый класс называется InputClear и выглядит так…
const InputClear = () => {
const[name2val, setName2] = useState("");
const[min2, setMin] = useState("0...");
const[maxval, setMax] = useState("...1000");
const handleClick2 = () => { //This is to clear all fields of user input
setMin("0...");
setMax("...1000");
console.log(min2);
}
return(
<nav className={"inputclear-list"}>
<h3 className={"inputclear-list-logo"} >
<u>Perform Queries: </u>
</h3>
<UserInput name2={" Ranking "} min={min2} max={maxval}/>
<br/>
<button className={"button"} onClick={handleClick2}> Reset </button>
</nav>
);
};
Мой второй класс называется userInput. Он предназначен для получения пользовательского ввода и пока ничего с ним не делает.
Это выглядит так
[Input Box] < Ranking < [Input Box]
Это то, что у меня есть до сих пор…
const UserInput = (props) => {
const update = (value) => {
console.log(value.target.value);//Gets value put into text box
}
return(
<div className='container'>
<div className='col'>
<input type='text' placeholder={props.min} onChange={update} />
</div>
<div className="col">amp;<{props.name2}amp;<</div>
<div className="col">
<input type='text' placeholder={props.max} onChange={update} />
</div>
</div>
);
};
Где я натыкаюсь на стену, так это всякий раз, когда нажимается кнопка из InputClear, все значения, введенные в текстовые поля в userInput, очищаются.
По сути, я имею в виду, если это выглядит так
[1000] < Ranking < [10000]
it then becomes
[ ] < Ranking < [ ]
Комментарии:
1. Итак, где вы используете этот
UserInput
компонент ? Он помещен внутрьInputClear
? Пожалуйста, укажите, где он находится ?2. Нам тоже нужно увидеть
GetInput
компонент. Я могу только сказать, что"
в вводе отсутствует закрытиеsetMax()
handleClick2()
.3. @KavinduVIndika Извините, я имел в виду ввод пользователя. Я забыл изменить это после копирования.
4. @anarchist912 У меня была ошибка в типе. Я имел в виду userInput вместо GetInput, также спасибо, я просто добавил, что
"
5. Итак, вы хотите, чтобы значения были очищены при нажатии?
Ответ №1:
Вам необходимо предоставить setMin
и setMax
функции дочернему компоненту, чтобы установить тот state
, который находится в вашем родительском компоненте.
const InputClear = () => {
const[name2val, setName2] = useState("");
const[min2, setMin] = useState("0...");
const[maxval, setMax] = useState("...1000");
const handleClick2 = () => { //This is to clear all fields of user input
setMin("0...");
setMax("...1000");
console.log(min2);
}
return(
<nav className={"inputclear-list"}>
<h3 className={"inputclear-list-logo"} >
<u>Perform Queries: </u>
</h3>
<UserInput name2={" Ranking "} min={min2} max={maxval} setMin={setMin} setMax={setMax} />
<br/>
<button className={"button"} onClick={handleClick2}> Reset </button>
</nav>
);
};
Затем внутри change
функции вам нужно обновить state
ее следующим образом, когда onChange
в input
полях происходит событие. placeholder
это просто временный держатель, куда вы можете поместить его как минимум и максимум (только строки), или вы также можете поместить свои начальные min
и max
значения.
const UserInput = (props) => {
const update = (event, setValue) => {
console.log(event.target.value); //Gets value put into text box
setValue(event.target.value);
}
return(
<div className='container'>
<div className='col'>
<input type='text' value={props.min} onChange={(event) => update(event, props.setMin)} />
</div>
<div className="col">amp;<{props.name2}amp;<</div>
<div className="col">
<input type='text' value={props.max} onChange={(event) => update(event, props.setMax)} />
</div>
</div>
);
};
Комментарии:
1. Я тоже пробовал это, и это просто заставляет значение заполнять поле, а не столько значение серого фона поля, которое там есть, пока они не начнут вводить его.
2. Значит, вам нужно сохранить это как
readOnly
? Больше ничего не меняя ? Можете ли вы проверить обновленный ответ прямо сейчас ?3. С
value={props.min}
его помощью в поле не отображается никакой символ, кроме реквизита.min. Значение изменяется, но не отображается при вводе пользователем.4. Итак, вы хотите сказать, что вам нужно обновить их
min2
, иmaxVal
когда вы предоставляете какие-либо пользовательские данные вinput
поле ?5. Теперь это позволяет его напечатать, спасибо!