我可以通过单击按钮调用组件吗?我可以直接在 onclick 事件值中传递组件吗?
can i call a component by clicking a button and can i directly pass a component inside the onclick event value?
我试图通过单击另一个组件内的添加按钮来调用一个组件,其中它有一个包含所有产品信息的容器。我希望单击添加产品按钮并加载或弹出 AddProduct 组件,以便我可以开始填写产品信息。
代码是这样的:
import React from 'react'
import './Home.css'
import Dropdown from './Dropdown'
import Radiobutton from './Radiobutton'
import AddProduct from './AddProduct'
function Home() {
return (
<div>
<Radiobutton />
<div className="product">
<Dropdown />
<button className="btn1" onClick={<AddProduct />}>
+AddProduct</button>
</div>
</div>
)
}
export default Home
单击按钮时加载此组件。
import React from 'react'
import Dropdown from './Dropdown'
import './AddProduct.css'
function AddProduct() {
return (
<div className="box">
<h1>Add Product</h1>
<p>
<input type="text" placeholder="Name"></input>
<Dropdown />
</p>
<p>
<input type="text" placeholder="Stock"></input>
</p>
<div>
<button className="btn2">Save</button>
</div>
</div>
)
}
export default AddProduct
使用状态来处理 pop-up 可见性,如布尔值 showAddProduct
,在单击 Add Product
按钮时切换它。如下图。
保存产品后关闭它。
const { useState } = React;
// add'l components
const Radiobutton = () => <input type="radio" />;
const Dropdown = () => <select><option>Drop Down1</option>
<option>Drop Down2</option>
</select>;
//actual code
function Home() {
const [showAddProduct, setShowAddProduct] = useState(false);
return (
<div>
<Radiobutton />
<div className="product">
<Dropdown />
<button className="btn1" onClick={() => setShowAddProduct(!showAddProduct)}>
AddProduct
</button>
</div>
{showAddProduct && <AddProduct setShowAddProduct={setShowAddProduct} />}
</div>
);
}
function AddProduct({ setShowAddProduct }) {
return (
<div className="modal">
<div className="box">
<h1>Add Product</h1>
<p>
<input type="text" placeholder="Name"></input>
<Dropdown />
</p>
<p>
<input type="text" placeholder="Stock"></input>
</p>
<div>
<button className="btn2" onClick={() => setShowAddProduct(false)}>
Save
</button>
</div>
</div>
</div>
);
}
// Render it
ReactDOM.render(
<Home/>,
document.getElementById("react")
);
.modal {
display: block; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}
.box {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>
我试图通过单击另一个组件内的添加按钮来调用一个组件,其中它有一个包含所有产品信息的容器。我希望单击添加产品按钮并加载或弹出 AddProduct 组件,以便我可以开始填写产品信息。 代码是这样的:
import React from 'react'
import './Home.css'
import Dropdown from './Dropdown'
import Radiobutton from './Radiobutton'
import AddProduct from './AddProduct'
function Home() {
return (
<div>
<Radiobutton />
<div className="product">
<Dropdown />
<button className="btn1" onClick={<AddProduct />}>
+AddProduct</button>
</div>
</div>
)
}
export default Home
单击按钮时加载此组件。
import React from 'react'
import Dropdown from './Dropdown'
import './AddProduct.css'
function AddProduct() {
return (
<div className="box">
<h1>Add Product</h1>
<p>
<input type="text" placeholder="Name"></input>
<Dropdown />
</p>
<p>
<input type="text" placeholder="Stock"></input>
</p>
<div>
<button className="btn2">Save</button>
</div>
</div>
)
}
export default AddProduct
使用状态来处理 pop-up 可见性,如布尔值 showAddProduct
,在单击 Add Product
按钮时切换它。如下图。
保存产品后关闭它。
const { useState } = React;
// add'l components
const Radiobutton = () => <input type="radio" />;
const Dropdown = () => <select><option>Drop Down1</option>
<option>Drop Down2</option>
</select>;
//actual code
function Home() {
const [showAddProduct, setShowAddProduct] = useState(false);
return (
<div>
<Radiobutton />
<div className="product">
<Dropdown />
<button className="btn1" onClick={() => setShowAddProduct(!showAddProduct)}>
AddProduct
</button>
</div>
{showAddProduct && <AddProduct setShowAddProduct={setShowAddProduct} />}
</div>
);
}
function AddProduct({ setShowAddProduct }) {
return (
<div className="modal">
<div className="box">
<h1>Add Product</h1>
<p>
<input type="text" placeholder="Name"></input>
<Dropdown />
</p>
<p>
<input type="text" placeholder="Stock"></input>
</p>
<div>
<button className="btn2" onClick={() => setShowAddProduct(false)}>
Save
</button>
</div>
</div>
</div>
);
}
// Render it
ReactDOM.render(
<Home/>,
document.getElementById("react")
);
.modal {
display: block; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}
.box {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>