1 回答
TA贡献1851条经验 获得超4个赞
看来你确实想多了。React 允许您使用任何类型的有效 HTML 元素(语义或非语义)构建和组合组件。
建立可访问的网站是一个很好的做法。考虑到这一点,您可以将各种语义元素划分为组件。这些组件可以是类组件或功能组件 (如果您使用React Hooks,它们都是功能组件)。
这是一个简单的例子:
class App extends React.Component {
state = {
name: 'Amazing Startup'
}
render() {
return(
<React.Fragment>
<Header name={this.state.name}/>
<Main />
<Footer />
</React.Fragment>
)
}
}
function Header({ name }) {
return (
<header>
<h1>Hello! We are {name}</h1>
</header>
)
}
function Main() {
return (
<main>
<p>Important stuff goes here..</p>
</main>
)
}
function Footer() {
return (
<footer>
<p>Made with React - 1 Hacker Way Menlo Park, CA 94025</p>
</footer>
)
}
ReactDOM.render(<App />, document.getElementById('root'));
body {
font-family: sans-serif;
min-height: 100vh;
margin: 0;
}
#root {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 2fr 1fr;
}
header {
font-size: 0.8rem;
background-color: deepskyblue;
padding: 0.5rem;
}
main {
background-color: limegreen;
padding: 0.5rem;
}
footer {
background-color: orange;
padding: 0.5rem;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
值得注意的是,您绝对可以将所有必需的 HTML 元素放置在单个组件中。然而,分离功能是件好事,这反过来又会教您如何组合组件,这是它们的主要设计原则之一。
TA贡献1856条经验 获得超17个赞
所有支持的 html 属性
JSX 支持所有 html 标签。所有正常的 html 语义都适用于 React JSX。
Fragment
React.Fragment 组件允许您在 render() 方法中返回多个元素,而无需创建额外的 DOM 元素
正确的 React JSX 语法是每个 React 组件返回一个节点,通常实现如下
render ( <div> { /* multiple children */ } </div> );
但这基本上将一个无用的 div 注入到 DOM 中。Fragment
允许以下不会污染 DOM 的操作。
render ( <Fragment> { /* multiple children */ } </Fragment>) ;
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报