javascript - 1 组件 2 有条件返回。如何渲染一个集合的孩子?
问题描述
我尝试让我的组件返回 2 个条件,但我有一个错误:
Objects are not valid as a React child (found: object with keys {movie}). If you meant to render a collection of children, use an array instead.
我阅读了几乎相同主题的其他主题,我试图用她的解决方案纠正我的错误,但没有成功。
没有尝试的基本代码。所关注的功能(我尝试渲染)是IsFav
IsNotFav
.
fils.js:
import React from "react";
import "../css/MovieRow.css";
import { APIKEY, baseURL } from "../../App";
var myFavoriteMovies = [];
function IsFav(props) {
return (
<div key={this.props.movie.id} className="MovieRow">
<div>
<img alt="poster" src={this.props.posterSrc} />
</div>
<div>
<h3>{this.props.movie.title}</h3>
<p>{this.props.movie.overview}</p>
<input type="button" onClick={this.viewMovie.bind(this)} value="View" />
<button onClick={props.onClick} className="heart" />
</div>
</div>
);
}
function IsNotFav(props) {
return (
<div key={this.props.movie.id} className="MovieRow">
<div>
<img alt="poster" src={this.props.posterSrc} />
</div>
<div>
<h3>{this.props.movie.title}</h3>
<p>{this.props.movie.overview}</p>
<input type="button" onClick={this.viewMovie.bind(this)} value="View" />
<button onClick={props.onClick} className="toggled heart" />
</div>
</div>
);
}
class MovieRow extends React.Component {
constructor(props) {
super(props);
this.addFavorite = this.addFavorite.bind(this);
this.deleteFavorite = this.deleteFavorite.bind(this);
this.state = { isFaved: false };
}
viewMovie() {
const url = "https://www.themoviedb.org/movie/" + this.props.movie.id;
window.location.href = url;
}
addFavorite() {
this.setState({ isFaved: true });
const favMovie = "".concat(
baseURL,
"movie/",
this.props.movie.id,
"?api_key=",
APIKEY
);
myFavoriteMovies.push(favMovie);
}
deleteFavorite() {
this.setState({ isFaved: false });
}
render() {
const isFaved = this.state.isFaved;
let movie;
if (isFaved) {
movie = <IsNotFav onClick={this.deleteFavorite} />;
} else {
movie = <IsFav onClick={this.addFavorite} />;
}
return { movie };
}
}
export { MovieRow as default, myFavoriteMovies };
解决方案
{ movie: movie }
您正在从您的MovieRow
渲染方法返回一个对象。只需直接返回 JSX:
render() {
const isFaved = this.state.isFaved;
let movie;
if (isFaved) {
movie = <IsNotFav onClick={this.deleteFavorite} />;
} else {
movie = <IsFav onClick={this.addFavorite} />;
}
return movie;
}
推荐阅读
- python - 在 python 中存储来自多个 URL 的数据
- javascript - 如何使用 React onClick 防止 href 触发?
- mongodb - mongodb找到一个未引用的关键字
- google-cloud-platform - 如何在数据流作业中指定实例类型?
- angular - 是否有可用于查看器版本 7 的 angular 8 自动锻造的示例。 *
- android - 如何根据 Firestore 中的特定字段从集合中获取所有文档
- python - Wireshark 如何解释十六进制值?
- regex - 使用正则表达式在 Notepad++ 中设置差异
- python - 部署到 GoogleAPP ENGINE
- python-3.x - 如何从列表中搜索值并应用 np.where 条件?