Проблема: Взаимодействие с элементом ввода HTML БУДЕТ изменить состояние, но по какой-то причине изменения в состоянии не приводят к обновлению / обновлению текстовой области, даже если это происходит в более старых версиях проекта.
Поскольку мой основной проект немного велик, я решил попробовать создать меньший фиктивный проект, взяв существующий проект, использующий React + Codemirror, и попытаться увидеть, что было сделано иначе, чем мой собственный. Я сделал это путем клонирования из https://github.com/JedWatson/react-codemirror, но я не мог действительно понять, что происходит, так как я только недавно взял React из учебника Traversy 2019 года, который использовал более современный синтаксис. Мне удалось обновить синтаксис этого клонированного проекта так, чтобы он напоминал мой основной, но каким-то образом это привело к той же проблеме. Я не знаю, имеет ли это значение, но я запустил этот фиктивный проект, установив реакцию с npx create-react-app .
, затем запустил npm start
.
. Я также добавил «Показать состояние» button
над * 1011. * который регистрирует текущее состояние в консоли, так что я точно знаю, что состояние обновляется правильно, поэтому на самом деле проблема в том, что textarea
не обновляется, несмотря на изменение состояния. Он имеет value = {this.state.code}
в качестве реквизита, но не изменяется, когда changeMode
вызывается через select
и изменяется this.state.code
на this.setState()
. Подсветка синтаксиса будет изменяться правильно, но не фактическое содержание текста.
https://gist.github.com/Daniel-WR-Hart/04c14b5bdf10c4811be68d5890943ebd
(я называю это textarea
, но я знаю, что технически это div
с множеством других divs
, spans
и парой textarea
внутри него
Вот живая демонстрация, которая показывает, что должно произойти, когда select
меняется с " Разметка "до" Javascript ": http://jedwatson.github.io/react-codemirror/