2016-12-03 172 views
0

我有一個TourEditor類,它是兒童和TourEditor類的父級,它在提交時處理表單。我希望父tourEditor在孩子中調用函數updateFiles(files)時更新組件對象,但不幸的是,它只保存孩子的初始狀態並且不更新狀態。關於如何解決這個問題的任何想法?當孩子/父母更改狀態時更新父級

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); 
})