2016-12-03 30 views
0

私はクラスのTourEditorを持ち、送信時にフォームを処理するtourEditorクラスの親です。残念ながら、子の初期状態を保存しているだけで、状態を更新していないのであれば、親のtourEditorがコンポーネントオブジェクトを更新するようにしたいと思います。どのようにこれを解決することができますか?子/親が状態を変更したときに親を更新します

TourEditor.js

export default class TourEditor extends React.Component { 

    constructor(props){ 
    super(props); 
    this.state = {"files": []}; 
    this.updateFiles = this.updateFiles.bind(this); 
    } 

    componentDidMount() { 
    tourEditor({ component: this }); 
    } 

    updateFiles(files) { 
     this.setState({ 
      files: files 
     }); 
    } 

    render() { 
    const { tour } = this.props; 
    return (<form 
     ref={ form => (this.tourEditorForm = form) } 
     onSubmit={ event => event.preventDefault() } 
    > 
     <FormGroup> 
     //.... 
     </FormGroup> 
    </form>); 
    } 
} 

tourEditor.js

export default function tourEditor(options) { 
    console.log(options); 
    component = options.component; 
    validate(); 
} 
+0

あなたは 'updateFiles'呼び出すところ、私は見ていない、あなたもそれを含める必要があります – Khang

答えて

1

私はあなたがmatb33が必要だと思う:コレクション・フック

このパッケージには、サーバ上で実行され、あなたがアクションを実行することができますデータベースの更新前または更新後。したがって、たとえば、子レコードが更新されたときに親を更新することができます。ここで

は、写真のいずれかが変更されたとき、私は、アルバム内の写真の数を再計算例です。

var photoUpdate = function(userId,doc) { 
    // console.log("Updating photo counts for album "+doc.albumid); 
    var photoCount = Photos.find({ 
     albumid: doc.albumid 
    }).count(); 
    Albums.update({_id: doc.albumid},{ 
     $set:{ 
      photoCnt: photoCount 
     } 
    }); 
} 

Photos.after.insert(function (userId, doc) { 
    photoUpdate(userId,doc); 
}) 

Photos.after.update(function (userId, doc) { 
    photoUpdate(userId,doc); 
}) 

Photos.after.remove(function (userId, doc) { 
    photoUpdate(userId,doc); 
}) 
関連する問題