Хорошо, вот несколько вещей, на которые стоит обратить внимание:
1) Не читайте ничего из DOM при использовании React. DOM слушает React и обновляет соответственно, в большинстве случаев нет необходимости читать значения из него. Например:
let object = document.getElementById("myDiv");
console.log(object.textContent);
Вместо этого вы можете хранить все, что хотите, показанное в myDiv
, внутри состояния, а затем отображать его оттуда:
this.state = { myDiv: 'some text here' }
render(){
return(
<div>{this.state.myDiv}</div>
)
}
2) Измените handleFind(e)
на функцию стрелки или свяжите ее, как вы сделали с handleChange(e)
. Вы также ожидаете аргумент e
, который вы никогда не передадите, поэтому либо используйте
handleFind = () => { // code here }
или
handleFind(){ //code here }
3) Для handleFind
, e.target.value
- это не то, что вы ожидаете, даже если вы пропустите событие - поскольку вход не является целью, e.target.value
будет неопределенным, даже если вы передадите его как :
<AccountCircle onClick={e => this.handleFind(e)} />
Вот несколько измененная версия, которая позволяет получать доступ к вводимому значению при каждом нажатии значка:
https://codesandbox.io/s/6lwx70y0rz
Некоторые материалы для чтения:
Краткое объяснение React Virtual DOM
Статья о функциях стрелок
Статья о состоянии реакции