Comments (3)
A click event will call row renderer twice, this is the expected behavior. The first call is to render the next selected node, the second call is to render previous selected node so it will display the unselected state:
// Select this node
if (this.state.selectedNode !== node) {
node.state.selected = true;
// Update the row corresponding to the node
this.rows[nodeIndex] = this.options.rowRenderer(node, this.options);
}
// Deselect the current node
if (this.state.selectedNode) {
const selectedNode = this.state.selectedNode;
const selectedIndex = this.nodes.indexOf(this.state.selectedNode);
selectedNode.state.selected = false;
this.rows[selectedIndex] = this.options.rowRenderer(selectedNode, this.options);
}
In your case, the updateNode method does not remove unused id from the lookup table (e.g. this.nodeTable
) because I didn't expect one would ever change the node id. I think that would be the problem that caused an error.
Lets take a look at getNodeById, it will lookup the node by id from the nodeTable, if an unused node id was not removed from the nodeTable, it will return the node immediately, and therefore caused unexpected behavior.
getNodeById(id) {
let node = this.nodeTable.get(id);
if (!node) {
// Find the first node that matches the id
node = this.nodes.filter((node) => {
return (node.id === id);
})[0];
if (!node) {
return null;
}
this.nodeTable.set(node.id, node);
}
return node;
}
from infinite-tree.
The lookup table should be refreshed when changing the node id with updateNode. I will fix it in the next release.
from infinite-tree.
Fixed in v1.8.2
from infinite-tree.
Related Issues (20)
- After opening many hierarchy of tree closing of tree is taking time
- Open or close alls Nodes HOT 3
- Any possibility to sort Nodes HOT 1
- Loading/opening node with around 60k children HOT 1
- drag & drop doesn't work on internet explorer
- Splice.Apply causes “Maximum call stack size exceeded” when there is 170k+ nodes under one node
- Lazy loading query
- Flickering when scrolling down HOT 5
- tree.openNode function is not working for a node while updating tree data via tree.loadData function HOT 1
- On click of node, how can I dynamically add children in existing node.
- 使用问题
- Semi selective state problem
- Drag and drop data onto nodes from outside the browser
- example code not working HOT 1
- 把节点拖动到树区域以外
- Feature request: Hide root node and start at children
- How do you write a row renderer? Example one in docs doesn't work.
- Feature request: openAll() and closeAll()
- How do you set the height of the tree?
- Computing row height using offsetHeight causes rounding errors HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from infinite-tree.