Javascript 如何在制作类似组件时不重复自己的工作
所以这更像是一个文体问题,比如说我有两个部分Javascript 如何在制作类似组件时不重复自己的工作,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,所以这更像是一个文体问题,比如说我有两个部分 Components - LoginPage - LoginPage.jsx - loginPage.module.css - RegisterPage - RegisterPage.jsx - registerPage.module.css LoginPage和RegisterPage看起来完全相同,请原谅几个词,但所有样式都相同。 我应该如何组织或组织它们,使它们不必在两个组件中编写两次相同的css和/
Components
- LoginPage
- LoginPage.jsx
- loginPage.module.css
- RegisterPage
- RegisterPage.jsx
- registerPage.module.css
LoginPage和RegisterPage看起来完全相同,请原谅几个词,但所有样式都相同。
我应该如何组织或组织它们,使它们不必在两个组件中编写两次相同的css和/或jsx。我知道我可以将样式放在index.css中,并将它们设置为全局样式,但这样就不用使用我感觉到的css模块了。感谢您的帮助您可以创建一个单一组件,如
Auth.js
,它可以接收type
或Login
或Register
等道具,并可以相应地操作视图,从而帮助您消除重复。您可以创建一个单一组件,如Auth.js
,它可以接收诸如type
或Login
或Register
之类的道具,并可以相应地操作视图,从而帮助您消除重复。React是关于组件的可重用性。因此,通过创建一个单独的组件,您可以在这两种方式中使用样式css
或JSX。考虑下面的例子。
function Wrapper({children}) {
return (
<div className="wrapper">
{children}
</div>
)
}
假设Login.jsx
如下所示
function Login() {
return (
<div className="wrapper">
<input type="text" placeholder="Username"/>
<input type="text" placeholder="Password" />
<input type="submit" value="Login" />
</div>
)
}
现在,您完全可以在login.jsx
和register.jsx
中使用DOM,或者在这两个页面中复制/粘贴css
但是,如果您的包装器
类名称定义了太多css属性,或者您的输入字段定义了某些自定义动画,那么您可以将其分解为多个组件,如下面的示例所示
function Wrapper({children}) {
return (
<div className="wrapper">
{children}
</div>
)
}
在Register.jsx中
function Register() {
return (
<Wrapper>
<input type="text" placeholder="Username"/>
<input type="text" placeholder="Password" />
<input type="text" placeholder="Confirm Password" />
<input type="submit" value="Login" />
</Wrapper>
)
}
函数寄存器(){
返回(
)
}
因此,通过这种方式,您可以在Login.jsx
和Register.jsx
中使用wrapper
类的CSS
它也有助于输入
字段
如果您有通用的CSS
或者您需要输入字段的通用验证,那么您可以定义一个单独的组件名称input
,这样您就可以导入input
,它也将导入输入的CSS
如果您没有为输入定义任何此类CSS
,或者您觉得它不会在其他地方使用,那么最好在页面中重复该元素
它也有助于
Auth
。Auth
检查逻辑可以传递给最高级的组件。React是关于组件的可重用性的。因此,通过创建一个单独的组件,您可以在这两种方式中使用样式css
或JSX。考虑下面的例子。
function Wrapper({children}) {
return (
<div className="wrapper">
{children}
</div>
)
}
假设Login.jsx
如下所示
function Login() {
return (
<div className="wrapper">
<input type="text" placeholder="Username"/>
<input type="text" placeholder="Password" />
<input type="submit" value="Login" />
</div>
)
}
现在,您完全可以在login.jsx
和register.jsx
中使用DOM,或者在这两个页面中复制/粘贴css
但是,如果您的包装器
类名称定义了太多css属性,或者您的输入字段定义了某些自定义动画,那么您可以将其分解为多个组件,如下面的示例所示
function Wrapper({children}) {
return (
<div className="wrapper">
{children}
</div>
)
}
在Register.jsx中
function Register() {
return (
<Wrapper>
<input type="text" placeholder="Username"/>
<input type="text" placeholder="Password" />
<input type="text" placeholder="Confirm Password" />
<input type="submit" value="Login" />
</Wrapper>
)
}
函数寄存器(){
返回(
)
}
因此,通过这种方式,您可以在Login.jsx
和Register.jsx
中使用wrapper
类的CSS
它也有助于输入
字段
如果您有通用的CSS
或者您需要输入字段的通用验证,那么您可以定义一个单独的组件名称input
,这样您就可以导入input
,它也将导入输入的CSS
如果您没有为输入定义任何此类CSS
,或者您觉得它不会在其他地方使用,那么最好在页面中重复该元素
它也有助于
Auth
。Auth
check逻辑可以传递给最高级的组件。好吧,我是这么想的,但它似乎有点黑客行为,但如果这是最好的方法,我就这么做。谢谢,对了,我是这么想的,但似乎有点不太对劲,但如果这是最好的方法,我就这么做。谢谢