У меня есть компонент, который использует другой компонент, который вводит и выплевывает значения из текстового поля. Я могу получить значение, которое я ввожу из дочернего компонента, моя проблема заключается в сбросе значения дочернего компонента. Сейчас, когда я выполняю свою функцию onadditem, поле автозаполнения будет сохранять значение, прежде чем я нажму на кнопку надстройки для onadditem.
Это родительский компонент:
const [state, setState] = useState({
id: props.spendItem.id,
isNew: (props.spendItem.id == -1),
description: '',
vendor: ''
});
const onAddItem = (e) => {
setState({...state, id: -1, description: '', isNew: true, vendor:''});
}
const setAutoCompleteValue = (e) => {
setState({...state, vendor: e})
}
var newItem = (<div>
<AutoComplete
items={vendors}
name='vendor'
value={state.vendor}
setValue={setAutoCompleteValue}
/>
<button onClick={onAddItem}>+</button>
</div>);
Этокомпонент ввода
const AutoComplete = props => {
const [typedValue, setTypedValue] = useState(props.value.name || '');
useEffect(() => {
props.setValue(getValue());
}, [typedValue]);
const onChange = (e) => {
// i process my change for the value here
}
const getValue = () => {
return typedValue;
}
return (
<div>
<input
id='auto_input'
name='name'
onChange={onChange}
value={typedValue}
/>
</div>
);
}
export default AutoComplete;