興味深い問題が発生しました。私はツリービューである子コンポーネントに渡されるオブジェクトの配列を持つ親コンポーネントを持っています。つまり、再帰的です。私は関数を渡していますし、子にいくつかの他の小道具と、子供が再帰的に扱うオブジェクトの配列を渡しています。子のレンダリング関数にプロップを記録すると、最初のレンダリングですべての小道具がそこにありますが、再帰関数が配列内の各オブジェクトを移動すると、再帰的に処理されない他のすべての小道具が失われます。コンポーネントは、最初の小道具オブジェクトをレンダリング再帰的子コンポーネントに小道具を渡してすべての小道具を保存する方法
は:PROP1、PROP2、arrayOfObjects
それは再帰が起こっているように、レンダリング再として、小道具子内のオブジェクトは次のようになるarrayOfObjects。
prop1およびprop2が消失した。
最終的には、子から親の関数を呼び出すことができないため、ツリーのどのノードがクリックされたかによって状態を更新できません。私はreduxを使用していません。これはスタイルガイドです - 私たちのプロダクションアプリとは別に、それは開発者のためのものであり、シンプルなので可能な限りコンポーネント内からすべての状態を扱いたいと思います。
もう1つ問題があります - オブジェクトの配列は、私たちのスタイルガイドのファイルのフォルダ構造です。リスト内の名前をクリックし、そのファイルの内容でビューを更新できる必要があります。これは、ファイルが子を持たないときにはうまく動作しますが、子ノードがある場合、親をクリックすると子がクリックされます。私はe.stopPropagation()、e.preventDefault()などを試しましたが、何の幸運もありませんでした。前もって感謝します。
親:
:import React, {Component} from 'react'
import StyleGuideStructure from '../../styleguide_structure.json'
import StyleTree from './style_tree'
class StyleGuide extends Component {
constructor(props) {
super(props)
let tree = StyleGuideStructure
this.state = {
tree: tree
}
これは、私はこれは私がここにフィドルとして、子供に持っているもの、本質的である
setVisibleSection(nodeTitle) {
this.setState({
section: nodeTitle
})
}
render() {
return(
<TreeNode
className="class-name-here"
setVisibleSection={this.setVisibleSection.bind(this)}
node={this.state.tree}
/>
)
}
}
export default StyleGuide
子から呼び出すしたい機能です
https://jsfiddle.net/ssorallen/XX8mw/
唯一の違いは、トグルフュー私は親のsetVisibleSectionを呼び出そうとしていますが、ダイスはありません。ここで
は、コンポーネントが最初にレンダリングするときの小道具を示すコンソールの写真で、その後、再帰後:
https://jsfiddle.net/hbjjq3zj/。私はもはや再帰の後にsetVisibleSection関数にアクセスすることはできません。残っている唯一の小道具はノード小道具です。ノード小道具を子供に渡さないと、すべての小道具はそのまま残る。 –