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逻辑可以传递给最高级的组件。

好吧,我是这么想的,但它似乎有点黑客行为,但如果这是最好的方法,我就这么做。谢谢,对了,我是这么想的,但似乎有点不太对劲,但如果这是最好的方法,我就这么做。谢谢