我构建了一个应用程序以及教程“聊天应用程序。使用React,Flux,Firebase和Webpack构建实时应用程序”,我遇到了一个我无法处理的问题。基本上我尝试将我在Firebase中设置的频道拉到我在React的商店但是出了点问题。这是代码的错误部分:
import alt from '../alt/index.js';
import Actions from '../actions/index.js';
import {decorate, bind, datasource} from 'alt-utils/lib/decorators';
import ChannelSource from '../sources/ChannelSource.jsx';
import _ from 'lodash';
@datasource(ChannelSource)
@decorate(alt)
class ChatStore {
constructor(){
this.state = {user: null};
}
@bind(Actions.channelsReceived)
receivedChannels(channels){
let selectedChannel;
_(channels)
.keys()
.map((key, index) =>{
channels[key].key = key;
if (index == 0){
channels[key].selected = true;
selectedChannel = channels[key];
}
})
.value();
console.log(channels);
this.setState({
channels,
selectedChannel
});
}
}
export default alt.createStore(ChatStore);
在教程中使用了函数链:keys().each().value()
来拉取通道,但在我的应用程序中它没有用完所以我尝试使用.map()而不是.each(),但它没有也工作。
浏览器显示与此部分代码相关的警告和错误:
警告:propType失败:提供给children
的无效道具ListItem
,预期是ReactNode。检查Channel
的呈现方法。
ListItem的'children'只是从Firebase中提取的频道。
以下是与此问题相关的错误:
未捕获(在承诺中)错误:对象无效作为React子对象(找到:具有键{name,key,selected}的对象)。如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象。检查ListItem
的呈现方法。
我尝试了所有东西,但我堆积在这里,无法继续前进。谢谢你的帮助。