鑑於以下QueryRenderer組件:如何將自定義道具傳遞給QueryRenderer渲染函數?
class ProjectQueryRenderer extends Component {
constructor(props) {
super(props);
this.renderProjectList = this.renderProjectList.bind(this);
}
renderProjectList({ error, props }) {
if (props) {
return (
<ProjectList
connection={props.viewer.allProjects}
onSelectProject={this.props.onSelectProject}
selectedProject={this.props.selectedProject}
/>
);
}
}
render() {
return (
<QueryRenderer
environment={environment}
query={ProjectsQuery}
render={this.renderProjectList}
/>
);
}
}
ProjectQueryRenderer.propTypes = {
onSelectProject: Proptypes.func.isRequired,
selectedProject: Proptypes.string.isRequired,
};
我的問題是,renderProjectList
不會被再次執行時,我自己selectedProject
道具的變化值。 render
方法顯然確實被觸發,但由於QueryRenderer
的任何一個道具都沒有被更改,所以renderProjectList
也沒有被調用。
處理這個問題的最佳方法是什麼?
不知道我正確地理解這一點。上面的例子給出了一個'Uncaught TypeError:this.props.render不是函數錯誤。 – nickdecooman
我將'render'道具名稱更改爲'component',但由您自己決定合適的名稱。也許我的解決方案並不完全是你要找的。我正在看着它,我正在工作。 「ProjectList」是否依賴於來自'ProjectQueryRenderer'和'QueryRenderer'的屬性?如果是這樣,這個問題還有另一種解決方案。 – aherriot