我正在创建简单的twitter_clone,使用Rails在前端创建json API和ReactJS。
我现在需要的是将新创建的推文保存到数据库中,然后在json中更新包含推文列表的API,以便能够使用它们来呈现视图。
为了实现它,我尝试使用post请求:
我在main.jsx文件中添加推文功能
addTweet(tweetToAdd){
$.post("/tweets", { body: tweetToAdd }) //after saving to database
.success( savedTweet => {
let newTweetsList = this.state.tweetsList;
newTweetsList.unshift(savedTweet);
this.setState({tweetsList: newTweetsList});
})
.error(error => console.log(error));
}
将推文的正文发送到数据库时出现问题,导致提交后此处为NULL。
可能这意味着主体不会发送到DB,但其余的参数都有。
在/ tweets中有一个json API,它看起来像:
[{"id":17,"user_id":1,"body":null,"created_at":"2015-12-18T10:11:25.085Z","updated_at":"2015-12-18T10:11:25.085Z","name":"Marek Czyż"}]
当我手动创建推文时,一切正常。所以这个问题必须出现在上一段代码中。
其次在按下SUBMIT推文之后,我收到了警告
警告:数组或迭代器中的每个子节点都应该有一个唯一的“key”prop。检查
TweetList
的呈现方法。有关详细信息,请参阅fb.me/react-warning-keys。
虽然每个推文都有一把钥匙:
让tweets = this.props.tweets.map(tweet =>);
请帮帮我。
答案 0 :(得分:1)
假设您将正确的值传递为tweetToAdd
,请确保permit控制器中的body
参数。如果它在控制台中工作,则不是验证问题,而是未经许可的参数。
至于您看到的错误,您需要为每个呈现的推文添加key
道具。类似的东西:
render() {
let tweets = this.props.tweets;
return <ul>
{tweets.map(tweet => {
return <li key={tweet.id}>{tweet.body}</li>;
})}
</ul>;
}