Codemirror textarea не будет синхронизироваться с состоянием React должным образом - PullRequest
0 голосов
/ 25 марта 2020

Проблема: Взаимодействие с элементом ввода 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/

...