react-component / react-component/tree
Not working under `Next.js`
Aperta
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 1.3k
- Fork
- 490
- Merge medio
- 3g 17h
- PR unite (30g)
- 5
Descrizione
Paste the example into a Next.js project, and run this page in the browser, it could render the tree correctly but no interactions at all.
/* eslint-disable no-alert, no-console, react/no-find-dom-node */
import React from 'react';
import '../../assets/index.less';
import './basic.less';
import Tree, { TreeNode } from 'rc-tree';
const treeData = [
{
key: '0-0',
title: 'parent 1',
children: [
{ key: '0-0-0', title: 'parent 1-1', children: [{ key: '0-0-0-0', title: 'parent 1-1-0' }] },
{
key: '0-0-1',
title: 'parent 1-2',
children: [
{ key: '0-0-1-0', title: 'parent 1-2-0', disableCheckbox: true },
{ key: '0-0-1-1', title: 'parent 1-2-1' },
{ key: '0-0-1-2', title: 'parent 1-2-2' },
{ key: '0-0-1-3', title: 'parent 1-2-3' },
{ key: '0-0-1-4', title: 'parent 1-2-4' },
{ key: '0-0-1-5', title: 'parent 1-2-5' },
{ key: '0-0-1-6', title: 'parent 1-2-6' },
{ key: '0-0-1-7', title: 'parent 1-2-7' },
{ key: '0-0-1-8', title: 'parent 1-2-8' },
{ key: '0-0-1-9', title: 'parent 1-2-9' },
{ key: 1128, title: 1128 },
],
},
],
},
];
class Demo extends React.Component {
static defaultProps = {
keys: ['0-0-0-0'],
};
constructor(props) {
super(props);
const { keys } = props;
this.state = {
defaultExpandedKeys: keys,
defaultSelectedKeys: keys,
defaultCheckedKeys: keys,
};
this.treeRef = React.createRef();
}
onExpand = expandedKeys => {
console.log('onExpand', expandedKeys);
};
onSelect = (selectedKeys, info) => {
console.log('selected', selectedKeys, info);
this.selKey = info.node.props.eventKey;
};
onCheck = (checkedKeys, info) => {
console.log('onCheck', checkedKeys, info);
};
onEdit = () => {
setTimeout(() => {
console.log('current key: ', this.selKey);
}, 0);
};
onDel = e => {
if (!window.confirm('sure to delete?')) {
return;
}
e.stopPropagation();
};
setTreeRef = tree => {
this.tree = tree;
};
render() {
const customLabel = (
<span className="cus-label">
<span>operations: </span>
<span style={{ color: 'blue' }} onClick={this.onEdit}>
Edit
</span>
<label onClick={e => e.stopPropagation()}>
<input type="checkbox" /> checked
</label>
<span style={{ color: '#EB0000' }} onClick={this.onDel}>
Delete
</span>
</span>
);
return (
<div style={{ margin: '0 20px' }}>
<h2>simple</h2>
<input aria-label="good" />
<Tree
ref={this.setTreeRef}
className="myCls"
showLine
checkable
defaultExpandAll
defaultExpandedKeys={this.state.defaultExpandedKeys}
onExpand={this.onExpand}
defaultSelectedKeys={this.state.defaultSelectedKeys}
defaultCheckedKeys={this.state.defaultCheckedKeys}
onSelect={this.onSelect}
onCheck={this.onCheck}
onActiveChange={key => console.log('Active:', key)}
>
<TreeNode title="parent 1" key="0-0">
<TreeNode title={customLabel} key="0-0-0">
<TreeNode title="leaf" key="0-0-0-0" style={{ background: 'rgba(255, 0, 0, 0.1)' }} />
<TreeNode title="leaf" key="0-0-0-1" />
</TreeNode>
<TreeNode title="parent 1-1" key="0-0-1">
<TreeNode title="parent 1-1-0" key="0-0-1-0" disableCheckbox />
<TreeNode title="parent 1-1-1" key="0-0-1-1" />
</TreeNode>
<TreeNode title="parent 1-2" key="0-0-2" disabled>
<TreeNode title="parent 1-2-0" key="0-0-2-0" checkable={false} />
<TreeNode title="parent 1-2-1" key="0-0-2-1" />
</TreeNode>
</TreeNode>
</Tree>
<h2>Check on Click TreeNode</h2>
<Tree
className="myCls"
showLine
checkable
selectable={false}
defaultExpandAll
onExpand={this.onExpand}
defaultSelectedKeys={this.state.defaultSelectedKeys}
defaultCheckedKeys={this.state.defaultCheckedKeys}
onSelect={this.onSelect}
onCheck={this.onCheck}
treeData={treeData}
/>
<h2>Select</h2>
<Tree
ref={this.treeRef}
className="myCls"
defaultExpandAll
treeData={treeData}
onSelect={this.onSelect}
height={150}
/>
<button
type="button"
onClick={() => {
setTimeout(() => {
console.log('scroll!!!');
this.treeRef.current.scrollTo({ key: '0-0-1-9' });
}, 100);
}}
>
Scroll Last
</button>
</div>
);
}
}
export default Demo;
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo l'esempio fornito in un progetto Next.js ed esegui la pagina in un browser, verificando le interazioni dell'albero. Il lavoro è completato quando l'albero viene visualizzato correttamente e risponde alle interazioni di espansione, selezione, spunta, modifica, eliminazione e scorrimento.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- next.js, react
- Ambito
- frontend
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 30/100