【发布时间】:2016-03-03 00:48:10
【问题描述】:
我正在通过使用 Meteor 创建一些示例项目来学习反应。我想我已经掌握了它,但现在我又被卡住了。
我正在使用 twitter API 从 BOINGBOING twitter 页面获取最近的 3 条推文。我可以确认我的 API 正常工作,并且可以控制包含 created_at、text 和 value.entities.media[0].media_url 的对象数组,这基本上是推文的图像 url。
我想要实现的是在包含 img 和 2 个 p 标记的 div 标记内显示三个推文。
我正在使用 JSX 构建 DOM,将当前推文的 DOM 推送到一个数组中,然后将该数组传递给 render()。我认为一组 React 元素应该呈现正确吗?那么我的错误是什么,我什么也没看到?
getTweets: function(){
Meteor.call('fetchTweets', function(error, result){
var res = [];
// cycle through the results and build reat elements
_.each(result, function(value, key, list){
var {created_at, text, ...other} = value;
if (value.entities.media != undefined) {
// no image
let node = (
<div>
<p>{created_at}</p>
<p>{text}</p>
</div>
);
console.log(node);
res.push(node);
} else {
// has image
let node = (
<div>
<img src={value.entities.media[0].media_url} alt=""/>
<p>{created_at}</p>
<p>{text}</p>
</div>
);
res.push(node);
}
})
console.log(res);
return res;
});
},
render: function() {
return (
<div>
<div className="alltweets">{this.getTweets()}</div>
</div>
);
}
【问题讨论】:
-
什么是渲染?另外,在渲染数组时,需要手动给组件一个
key属性(可以设置为循环的索引) -
@PhilVarg 我会试试这个
-
我们真的需要看到更多。你如何将它呈现给dom?我看不到您通过模板帮助程序、初始化程序或任何其他附加到 dom 的方式注入它的任何地方。此外,典型的反应元素开始时大不相同,我将发布一个答案来说明这一点。
-
@thatgibbyguy 我正在使用
{this.getTweets()}进行渲染 -> 请参阅帖子末尾的控制台输出,我在另一个示例中看到过这种方式。
标签: javascript meteor reactjs