Reactjs 使用React根据另一个组件中的下拉值更改组件中的图像
我是新来的。我有三个组件:一个顶级App.js组件,它呈现一个ProductOptions.js组件和一个ProductImage.js组件。我想根据ProductOptions组件中下拉列表的值更改ProductImage组件中显示的图像。当应用程序第一次渲染时,默认选择为黑色,相应的product-Black.jpg图像将显示在ProductImage组件中。用户可以切换到Brown,它将在ProductImage组件中显示product-Brown.jpg图像 我知道我需要更新状态并使用onChange事件来侦听下拉列表的值,但我不确定如何将其连接在一起 应用程序组件:Reactjs 使用React根据另一个组件中的下拉值更改组件中的图像,reactjs,Reactjs,我是新来的。我有三个组件:一个顶级App.js组件,它呈现一个ProductOptions.js组件和一个ProductImage.js组件。我想根据ProductOptions组件中下拉列表的值更改ProductImage组件中显示的图像。当应用程序第一次渲染时,默认选择为黑色,相应的product-Black.jpg图像将显示在ProductImage组件中。用户可以切换到Brown,它将在ProductImage组件中显示product-Brown.jpg图像 我知道我需要更新状态并使用o
import React from 'react';
import ProductOptions from './ProductOptions';
import ProductImage from './ProductImage';
class App extends React.Component {
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions />
</div>
<div className="col-4">
<ProductImage />
</div>
</div>
</div>
);
}
}
export default App;
import React from 'react';
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select className="form-control form-control-sm" id="colors" name="colors">
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from 'react';
import productBlack from '../images/product-black.jpg';
import productBrown from '../images/product-brown.jpg';
class ProductImage extends React.Component {
render() {
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={tempsource}
/>
</div>
);
}
}
export default ProductImage;
import React from "react";
import ProductOptions from "./ProductOptions";
import ProductImage from "./ProductImage";
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
selectedProduct: "Black"
};
}
handleSelectedProduct = selection => {
this.setState({ selectedProduct: selection });
};
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions
handleSelectedProduct={this.handleSelectedProduct}
selectedProduct={this.state.selectedProduct}
/>
</div>
<div className="col-4">
<ProductImage selectedProduct={this.state.selectedProduct} />
</div>
</div>
</div>
);
}
}
export default App;
import React from "react";
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select
className="form-control form-control-sm"
id="colors"
name="colors"
value={this.props.selectedProduct}
onChange={e => {
this.props.handleSelectedProduct(e.target.value);
}}
>
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from "react";
import productBlack from "../images/product-black.jpg";
import productBrown from "../images/product-brown.jpg";
class ProductImage extends React.Component {
render() {
const { selectedProduct } = this.props;
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={selectedProduct === "Black" ? productBlack : productBrown}
/>
</div>
);
}
}
export default ProductImage;
从“React”导入React;
从“/ProductOptions”导入ProductOptions;
从“./ProductImage”导入ProductImage;
类应用程序扩展了React.Component{
render(){
返回(
);
}
}
导出默认应用程序;
ProductOptions组件:
import React from 'react';
import ProductOptions from './ProductOptions';
import ProductImage from './ProductImage';
class App extends React.Component {
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions />
</div>
<div className="col-4">
<ProductImage />
</div>
</div>
</div>
);
}
}
export default App;
import React from 'react';
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select className="form-control form-control-sm" id="colors" name="colors">
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from 'react';
import productBlack from '../images/product-black.jpg';
import productBrown from '../images/product-brown.jpg';
class ProductImage extends React.Component {
render() {
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={tempsource}
/>
</div>
);
}
}
export default ProductImage;
import React from "react";
import ProductOptions from "./ProductOptions";
import ProductImage from "./ProductImage";
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
selectedProduct: "Black"
};
}
handleSelectedProduct = selection => {
this.setState({ selectedProduct: selection });
};
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions
handleSelectedProduct={this.handleSelectedProduct}
selectedProduct={this.state.selectedProduct}
/>
</div>
<div className="col-4">
<ProductImage selectedProduct={this.state.selectedProduct} />
</div>
</div>
</div>
);
}
}
export default App;
import React from "react";
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select
className="form-control form-control-sm"
id="colors"
name="colors"
value={this.props.selectedProduct}
onChange={e => {
this.props.handleSelectedProduct(e.target.value);
}}
>
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from "react";
import productBlack from "../images/product-black.jpg";
import productBrown from "../images/product-brown.jpg";
class ProductImage extends React.Component {
render() {
const { selectedProduct } = this.props;
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={selectedProduct === "Black" ? productBlack : productBrown}
/>
</div>
);
}
}
export default ProductImage;
从“React”导入React;
类ProductOptions扩展了React.Component{
render(){
返回(
颜色
黑色
棕色的
);
}
}
导出默认产品选项;
ProductImage组件:
import React from 'react';
import ProductOptions from './ProductOptions';
import ProductImage from './ProductImage';
class App extends React.Component {
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions />
</div>
<div className="col-4">
<ProductImage />
</div>
</div>
</div>
);
}
}
export default App;
import React from 'react';
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select className="form-control form-control-sm" id="colors" name="colors">
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from 'react';
import productBlack from '../images/product-black.jpg';
import productBrown from '../images/product-brown.jpg';
class ProductImage extends React.Component {
render() {
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={tempsource}
/>
</div>
);
}
}
export default ProductImage;
import React from "react";
import ProductOptions from "./ProductOptions";
import ProductImage from "./ProductImage";
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
selectedProduct: "Black"
};
}
handleSelectedProduct = selection => {
this.setState({ selectedProduct: selection });
};
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions
handleSelectedProduct={this.handleSelectedProduct}
selectedProduct={this.state.selectedProduct}
/>
</div>
<div className="col-4">
<ProductImage selectedProduct={this.state.selectedProduct} />
</div>
</div>
</div>
);
}
}
export default App;
import React from "react";
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select
className="form-control form-control-sm"
id="colors"
name="colors"
value={this.props.selectedProduct}
onChange={e => {
this.props.handleSelectedProduct(e.target.value);
}}
>
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from "react";
import productBlack from "../images/product-black.jpg";
import productBrown from "../images/product-brown.jpg";
class ProductImage extends React.Component {
render() {
const { selectedProduct } = this.props;
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={selectedProduct === "Black" ? productBlack : productBrown}
/>
</div>
);
}
}
export default ProductImage;
从“React”导入React;
从“../images/product black.jpg”导入productBlack;
从“../images/product brown.jpg”导入productBrown;
类ProductImage扩展了React.Component{
render(){
返回(
);
}
}
导出默认产品图像;
您的主应用程序
有两个子组件ProductOptions
和ProductImage
,它们也是兄弟,需要相互通信
App
有资格拥有状态,该状态在变量selectedProduct
中存储要显示给用户的当前产品selectedProduct
作为道具(名称与之类似)传递给两个组件this.handleSelectedProduct()
被传递到ProductOptions
以在更改时调用onChange
,并且App
状态与所选产品一起设置import React from 'react';
import ProductOptions from './ProductOptions';
import ProductImage from './ProductImage';
class App extends React.Component {
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions />
</div>
<div className="col-4">
<ProductImage />
</div>
</div>
</div>
);
}
}
export default App;
import React from 'react';
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select className="form-control form-control-sm" id="colors" name="colors">
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from 'react';
import productBlack from '../images/product-black.jpg';
import productBrown from '../images/product-brown.jpg';
class ProductImage extends React.Component {
render() {
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={tempsource}
/>
</div>
);
}
}
export default ProductImage;
import React from "react";
import ProductOptions from "./ProductOptions";
import ProductImage from "./ProductImage";
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
selectedProduct: "Black"
};
}
handleSelectedProduct = selection => {
this.setState({ selectedProduct: selection });
};
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions
handleSelectedProduct={this.handleSelectedProduct}
selectedProduct={this.state.selectedProduct}
/>
</div>
<div className="col-4">
<ProductImage selectedProduct={this.state.selectedProduct} />
</div>
</div>
</div>
);
}
}
export default App;
import React from "react";
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select
className="form-control form-control-sm"
id="colors"
name="colors"
value={this.props.selectedProduct}
onChange={e => {
this.props.handleSelectedProduct(e.target.value);
}}
>
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from "react";
import productBlack from "../images/product-black.jpg";
import productBrown from "../images/product-brown.jpg";
class ProductImage extends React.Component {
render() {
const { selectedProduct } = this.props;
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={selectedProduct === "Black" ? productBlack : productBrown}
/>
</div>
);
}
}
export default ProductImage;
从“React”导入React;
从“/ProductOptions”导入ProductOptions;
从“/ProductImage”导入ProductImage;
类应用程序扩展了React.Component{
构造函数(道具、上下文){
超级(道具、背景);
此.state={
所选产品:“黑色”
};
}
handleSelectedProduct=选择=>{
this.setState({selectedProduct:selection});
};
render(){
返回(
);
}
}
导出默认应用程序;
ProductOptions组件:
import React from 'react';
import ProductOptions from './ProductOptions';
import ProductImage from './ProductImage';
class App extends React.Component {
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions />
</div>
<div className="col-4">
<ProductImage />
</div>
</div>
</div>
);
}
}
export default App;
import React from 'react';
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select className="form-control form-control-sm" id="colors" name="colors">
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from 'react';
import productBlack from '../images/product-black.jpg';
import productBrown from '../images/product-brown.jpg';
class ProductImage extends React.Component {
render() {
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={tempsource}
/>
</div>
);
}
}
export default ProductImage;
import React from "react";
import ProductOptions from "./ProductOptions";
import ProductImage from "./ProductImage";
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
selectedProduct: "Black"
};
}
handleSelectedProduct = selection => {
this.setState({ selectedProduct: selection });
};
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions
handleSelectedProduct={this.handleSelectedProduct}
selectedProduct={this.state.selectedProduct}
/>
</div>
<div className="col-4">
<ProductImage selectedProduct={this.state.selectedProduct} />
</div>
</div>
</div>
);
}
}
export default App;
import React from "react";
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select
className="form-control form-control-sm"
id="colors"
name="colors"
value={this.props.selectedProduct}
onChange={e => {
this.props.handleSelectedProduct(e.target.value);
}}
>
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from "react";
import productBlack from "../images/product-black.jpg";
import productBrown from "../images/product-brown.jpg";
class ProductImage extends React.Component {
render() {
const { selectedProduct } = this.props;
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={selectedProduct === "Black" ? productBlack : productBrown}
/>
</div>
);
}
}
export default ProductImage;
从“React”导入React;
类ProductOptions扩展了React.Component{
render(){
返回(
颜色
{
此.道具.手选产品(如目标.价值);
}}
>
黑色
棕色的
);
}
}
导出默认产品选项;
ProductImage组件:
import React from 'react';
import ProductOptions from './ProductOptions';
import ProductImage from './ProductImage';
class App extends React.Component {
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions />
</div>
<div className="col-4">
<ProductImage />
</div>
</div>
</div>
);
}
}
export default App;
import React from 'react';
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select className="form-control form-control-sm" id="colors" name="colors">
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from 'react';
import productBlack from '../images/product-black.jpg';
import productBrown from '../images/product-brown.jpg';
class ProductImage extends React.Component {
render() {
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={tempsource}
/>
</div>
);
}
}
export default ProductImage;
import React from "react";
import ProductOptions from "./ProductOptions";
import ProductImage from "./ProductImage";
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
selectedProduct: "Black"
};
}
handleSelectedProduct = selection => {
this.setState({ selectedProduct: selection });
};
render() {
return (
<div className="container">
<div className="row">
<div className="col-8">
<ProductOptions
handleSelectedProduct={this.handleSelectedProduct}
selectedProduct={this.state.selectedProduct}
/>
</div>
<div className="col-4">
<ProductImage selectedProduct={this.state.selectedProduct} />
</div>
</div>
</div>
);
}
}
export default App;
import React from "react";
class ProductOptions extends React.Component {
render() {
return (
<div id="product-options">
<form>
<label for="colors">Colors</label>
<select
className="form-control form-control-sm"
id="colors"
name="colors"
value={this.props.selectedProduct}
onChange={e => {
this.props.handleSelectedProduct(e.target.value);
}}
>
<option value="Black">Black</option>
<option value="Brown">Brown</option>
</select>
</form>
</div>
);
}
}
export default ProductOptions;
import React from "react";
import productBlack from "../images/product-black.jpg";
import productBrown from "../images/product-brown.jpg";
class ProductImage extends React.Component {
render() {
const { selectedProduct } = this.props;
return (
<div id="product-image">
<img
alt="tempalt"
className="img-fluid"
src={selectedProduct === "Black" ? productBlack : productBrown}
/>
</div>
);
}
}
export default ProductImage;
从“React”导入React;
从“./images/product black.jpg”导入productBlack;
从“./images/product brown.jpg”导入productBrown;
类ProductImage扩展了React.Component{
render(){
const{selectedProduct}=this.props;
返回(
);
}
}
导出默认产品图像;