Javascript 有没有JSX';partials';?
我现在主要使用JS手柄,但我正在关注JSX。是否有一个JSX相当于把手部分?我想知道我是否可以创建一些可以在几个不同的JSX视图中重用的小标记。只需为此创建一个标记。组件可以是简单的,也可以是复杂的 例如:Javascript 有没有JSX';partials';?,javascript,reactjs,handlebars.js,jsx,Javascript,Reactjs,Handlebars.js,Jsx,我现在主要使用JS手柄,但我正在关注JSX。是否有一个JSX相当于把手部分?我想知道我是否可以创建一些可以在几个不同的JSX视图中重用的小标记。只需为此创建一个标记。组件可以是简单的,也可以是复杂的 例如: function Badge(props) { return <span className="badge">{props.counter}</span> } 功能徽章(道具){ 返回{props.counter} } 使用相应的.badgeCSS类,这可
function Badge(props) {
return <span className="badge">{props.counter}</span>
}
功能徽章(道具){
返回{props.counter}
}
使用相应的
.badge
CSS类,这可能是一个非常简单的组件,呈现为带数字的红色圆圈,并用作
它不提供部分。关于React的一些事情:
- React不提供任何partials的概念。反应的基本原子单位是组分
- 您可以创建一个或多个组件并重新使用这些组件,而不是传递部分。甚至比分部更好,因为它是一个函数,所以它是封装的和可测试的李>
- 如果标记很小,可能应该将其上移到父组件中,或者下移到更简单的组件中
- 代码气味通常应该以组件的形式结束(一次又一次地重复某些东西,等等)
- 组件通常是表示的或集装箱化的。后者在应用程序的道具/状态树中有角色(你永远不会“看到它们”)
- 根据需要将事物重构为组件;不要一开始就封装所有内容,因为您可能过早地进行了重构,并为自己制造了更多的问题
- 最可重用和解耦的组件就像是最好的功能或对象:干净、灵活、可测试,它们解决了一个问题
- 同时,不要发疯,把所有东西都变成一个组件。i、 e.你(通常)不想要:
React
'use strict';
const OuterComponent = React.createClass({
render() {
return (
<div>Outer{this.props.children}</div>
);
}
});
const ReusableComponent = React.createClass({
render() {
return (
<div>Am I reusable? {this.props.reusable && 'Yeah!' }</div>
);
}
});
ReactDOM.render(
<OuterComponent>
<ReusableComponent reusable={true}/>
</OuterComponent>,
document.getElementById('container')
);
但是请注意,如果不使用可变状态(通过this.state
在组件中提供给您),那么使用creatClass
可以提供比您可能需要的更多的功能组件,您可以轻松地使用有时称为“无状态功能组件”(因为它们是无状态的,并且由函数返回). 这些很容易成为隐式返回JSX的箭头函数(本质上就是React.createElement()
generator)
constoutercomponent=(props)=>Outer{this.props.children};
const ReusableComponent=(props)=>我是可重用的吗?{this.props.reusabled&&'Yeah!';
ReactDOM.render(
,
document.getElementById('容器')
);
OuterComponent
Am I reusable? Yeah!
const OuterComponent = (props) => <div>Outer{this.props.children}</div>;
const ReusableComponent = (props) => <div>Am I reusable? {this.props.reusable && 'Yeah!' }</div>;
ReactDOM.render(
<OuterComponent>
<ReusableComponent reusable={true}/>
</OuterComponent>,
document.getElementById('container')
);