1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-29 18:09:49 +02:00

fix re-rendering of last text nodes, closes #682

This commit is contained in:
Ian Storm Taylor
2017-03-30 12:55:15 -04:00
parent 4e81f4a0fd
commit 8af2026371

View File

@@ -109,7 +109,7 @@ class Node extends React.Component {
// If the node is a block or inline, which can have custom renderers, we // If the node is a block or inline, which can have custom renderers, we
// include an extra check to re-render if the node's focus changes, to make // include an extra check to re-render if the node's focus changes, to make
// it simple for users to show a node's "selected" state. // it simple for users to show a node's "selected" state.
if (props.node.kind != 'text') { if (nextProps.node.kind != 'text') {
const hasEdgeIn = props.state.selection.hasEdgeIn(props.node) const hasEdgeIn = props.state.selection.hasEdgeIn(props.node)
const nextHasEdgeIn = nextProps.state.selection.hasEdgeIn(nextProps.node) const nextHasEdgeIn = nextProps.state.selection.hasEdgeIn(nextProps.node)
const hasFocus = props.state.isFocused || nextProps.state.isFocused const hasFocus = props.state.isFocused || nextProps.state.isFocused
@@ -127,6 +127,14 @@ class Node extends React.Component {
if (!nextRanges.equals(ranges)) return true if (!nextRanges.equals(ranges)) return true
} }
// If the node is a text node, and its parent is a block node, and it was
// the last child of the block, re-render to cleanup extra `<br/>` or `\n`.
if (nextProps.node.kind == 'text' && nextProps.parent.kind == 'block') {
const last = props.parent.nodes.last()
const nextLast = nextProps.parent.nodes.last()
if (props.node == last && nextProps.node != nextLast) return true
}
// Otherwise, don't update. // Otherwise, don't update.
return false return false
} }