0.2.5 • Published 5 years ago

react-easy-jstree v0.2.5

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

react-easy-jstree

This is fork from react-simple-jstree

Downloads Downloads npm version dependencies dev dependencies License

The simple React.js wrapper for jsTree. This component allows you to draw trees from JSON data easily and quickly. See jsTree to get more information about appropriate JSON data structure.

Getting Started

Install it via npm:

npm install react-easy-jstree

And include in your project:

import TreeView from 'react-easy-jstree';

Components's Props

treeData

It is a required prop. It containes a JSON data for tree. See jsTree to get more information about appropriate JSON data structure.

onChange

It is an optional event handler for the changed event, which occurs when one or more nodes have been selected. See example below for this prop's usage details.

React.js (ES6) usage example:

import React, {Component} from 'react';
import TreeView from 'react-easy-jstree';

export class Tree extends Component {

  constructor(props) {
    super(props);
    this.state = {
      selectNode: ['anyNode'],
      data: {
        core: {
          data: [
            {
              text: 'Root node', children: [
              {text: 'Child node 1'},
              {text: 'Child node 2'}
              ]
            }
          ]
        }
      },
      selected: [],
    };
  }

  handleClick() {
    const newData = this.state.data.core.data[0].children.slice();
    newData.push({text: 'New child node'});
    this.setState({
      data: {
        core: {
          data: [
            {
              text: 'Root node', children: newData
            }
          ]
        }
      }
    });
  }

  handleChange(e, data) {
    this.setState({
      selected: data.selected,
    })
  }

  render() {
    const data = this.state.data;

    return (
      <div>
        <button onClick={() => this.handleClick()}>Add node</button>
        <br/><br/>
        <TreeView treeData={data} selectNode={this.state.selectNode} onChange={(e, data) => this.handleChange(e, data)} />
        <br />
        <p>Selected nodes: {this.state.selected.join(', ')}</p>
      </div>
    );
  }
}

IMPORTANT! If you use webpack, you have to install and configure css loaders and file-loader to load .gif and .jpg files in webpack.conf.js, for example:

loaders: [
     
      {
        test: /\.css$/,
        loaders: [
          'style',
          'css',
          'postcss'
        ]
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loaders: [
          'react-hot',
          'babel'
        ]
      },
      { test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$/,
        loader: 'file-loader'
      },
    ]

See example project in demo folder for details.

License

MIT

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago