1. ホーム
  2. reactjs

[解決済み] React テキストを挟んだ横長の仕切りを作る

2022-01-28 14:49:38

質問

テキストのようなコンテンツを挟む、水平方向の仕切りであるReactコンポーネントを作成する必要があります。私がオンラインで持っているすべてのリソースは、私がこれを成し遂げるのを助けることができません。私は、以下の例のように、Dividerコンポーネントを作成し、間にテキストを配置することによって、Material-UI Dividerを試してみました。

<Divider>Or</Divider>

でも、エラーが出るんです。

hr is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.

下の画像で実現したいのですが。

何かお手伝いできることがあれば、お願いします。

以下は私のコードです。

 import React from 'react';
 import { makeStyles } from '@material-ui/core/styles';
 import List from '@material-ui/core/List';
 import Divider from '@material-ui/core/Divider';

 const useStyles = makeStyles((theme) => ({
   root: {
   width: '100%',
   maxWidth: 360,
   backgroundColor: theme.palette.background.paper,
 },
 }));

 export default function ListDividers() {
 const classes = useStyles();

 return (
 <List component="nav" className={classes.root} aria-label="mailbox 
 folders">

  <Divider>Or</Divider>

  </List>
  );
 }

解決方法は?

ここでは、あなたができることのカスタム例を紹介します。 スタックブリッツで再現

import React, { Component } from "react";
import { render } from "react-dom";
import Hello from "./Hello";
import "./style.css";

const App = () => {
  return <Divider>Or</Divider>;
};

const Divider = ({ children }) => {
  return (
    <div className="container">
      <div className="border" />
      <span className="content">
        {children}
      </span>
      <div className="border" />
    </div>
  );
};

render(<App />, document.getElementById("root"));

そしてCSS。

.container{
  display: flex;
  align-items: center;
}

.border{
  border-bottom: 1px solid black;
  width: 100%;
}

.content {
  padding: 0 10px 0 10px;
}