Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有JSX';partials';?_Javascript_Reactjs_Handlebars.js_Jsx - Fatal编程技术网

Javascript 有没有JSX';partials';?

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类,这可

我现在主要使用JS手柄,但我正在关注JSX。是否有一个JSX相当于把手部分?我想知道我是否可以创建一些可以在几个不同的JSX视图中重用的小标记。

只需为此创建一个标记。组件可以是简单的,也可以是复杂的

例如:

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')
);