【发布时间】:2015-12-18 10:38:19
【问题描述】:
我正在使用 Rails 创建简单的 twitter_clone,以便在前端创建 json API 和 ReactJS。
我现在需要将新创建的推文保存到数据库中,然后更新 json 中的 API,其中包含推文列表,以便能够使用它们来呈现视图。
为了实现它,我尝试使用发布请求:
我在 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。
可能这意味着 body 没有发送到 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ż"}]
当我从控制台手动创建推文时,一切正常。所以问题一定出在前面的代码中。
在按下提交推文后,我收到了一条警告
警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查
TweetList的渲染方法。请参阅fb.me/react-warning-keys 了解更多信息。
虽然我每条推文都有一把钥匙:
让 tweets = this.props.tweets.map(tweet => );
请帮帮我。
【问题讨论】:
-
尝试记录
tweetToAdd的值。是空的吗?如果不是,则您的控制器中可能不允许您的身体参数。您看到的警告与您呈现推文的方式有关。你也可以分享那个代码吗?