【发布时间】:2017-03-19 04:07:34
【问题描述】:
我有一个 React 组件,我试图传递一些道具,但我得到一个 Uncaught Error: App.render(): A valid React element (or null) must be returned。您可能返回了未定义、数组或其他一些无效对象。当我尝试在快照中返回它时。
// cache settings data
fire.settings = {};
fire.settings.ref = fire.database.ref('settings');
// main app build
class App extends Component {
render() {
// get values from firebase
fire.settings.ref.on('value', function(data) {
return (<Home settings={data.val()} />);
});
}
}
所以我开始搞乱生成器并让组件渲染,但我的设置道具中只得到一个空对象。
// main app build
class App extends Component {
render() {
// get values from firebase
function* generator() {
fire.settings.ref.on('value', function(data) {
fire.settings.snapshot = data.val();
});
yield fire.settings.snapshot;
}
// init generator and return homepage
let promise = generator();
return (<Home settings={promise.next()} />);
}
}
以及使用 componentDidMount()
// main app build
class App extends Component {
componentDidMount() {
this.fire.settings.ref.on('value', function(snapshot) {
this.props.settings = snapshot.val();
}, (error) => console.log(error), this);
}
render() {
return (<Home settings={this.props.settings}/>);
}
}
已解决
将值通过渲染传递给组件
// init render
fire.settings.ref.on('value', function(data) {
ReactDOM.render(
<App settings={data.val()}/>, document.getElementById('app'));
});
export default App;
【问题讨论】:
标签: javascript reactjs firebase firebase-realtime-database