鉴于以下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