Как получить текущую строку на изменение в слатей
Как получить текущую строку или текущий отредактированный узел в пределах 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 ответа
Несколько вещей, которые я узнал:
anchorkey
получает текущий ключ выбораValue
имеет полезный ярлык,startKey
Используя выбранный в данный момент ключ, вы можете затем пройтись по узлам документа, чтобы получить текущий узел.
Я не уверен, если Slatejs
предоставляет способ получить узел по ключу; если так, я не могу найти это, но вышеизложенное приводит меня туда, куда я хочу.