Как получить текущую строку на изменение в слатей

Как получить текущую строку или текущий отредактированный узел в пределах onChange или же onKeyDown методы в Slate.js?

Я пытаюсь добавить updatedAt или же createdAt параметр в data атрибут для конкретной строки.

Вот подтверждение концепции того, что я пытаюсь сделать:

onChange = ({ value }) => { return value.document.nodes.reduce((change, node) => { return change.setNodeByKey(node.get("key"), { data: { createdAt: new Date(), ...node.get("data").toJS(), }, }); }, value.change()).value; }

Это проходит через каждый узел и добавляет createdAt атрибут в данных, если он еще не существует. Это, очевидно, не очень хороший код, поскольку он циклически проходит по каждому узлу и должен десериализовать неизменяемый объект данных для каждого узла, но, надеюсь, он иллюстрирует то, что я собираюсь сделать - как мне установить атрибут данных только для текущего узла?

2 ответа

Вы можете получить выбранные блоки по:

var selectedBlocks = value.blocks;

Шифер документы

Несколько вещей, которые я узнал:

  • anchorkey получает текущий ключ выбора
  • Value имеет полезный ярлык, startKey

Используя выбранный в данный момент ключ, вы можете затем пройтись по узлам документа, чтобы получить текущий узел.

Я не уверен, если Slatejs предоставляет способ получить узел по ключу; если так, я не могу найти это, но вышеизложенное приводит меня туда, куда я хочу.

Другие вопросы по тегам