Meteor React - 为什么 React 组件在 React Mounter 和 React Layout 中的定义不同?
Meteor React - Why are React Components defined differently in React Mounter vs React Layout from Kadira?
我很期待 Meteor 1.3,这样我就可以导入 React 组件,而不是将它们作为全局组件。
一直在学习本教程 (https://voice.kadira.io/getting-started-with-meteor-1-3-and-react-15e071e41cd1),我注意到我将不得不使用 React-mounter 而不是 Kadira 的 React-Layout
在这些文档中:
https://github.com/kadirahq/react-mounter
我看到 React 组件是这样定义的:
const MainLayout = ({content}) => (
<div>
<header>
This is our header
</header>
<main>
{content}
</main>
</div>
);
而不是像这样的东西
MainLayout = React.createClass({
propTypes: {
content: React.PropTypes.element
},
render() {
return (
<div>
<header>
This is our header
</header>
<main>
{this.content}
</main>
</div>
);
}
});
你能帮我解释一下这里发生了什么吗?另外我该如何使用这种新风格?在哪里定义所有的属性、方法、混入等?
还有一个附带问题,我注意到 React 是作为 npm 包添加的,而不是使用 Meteor add react
。这是我们现在应该添加反应的方式吗?
您可以将组件分为两种类型:容器和展示组件。
有关详细信息,请参阅 this
React v0.14 引入了一种叫做 functional components 的东西,它是通过函数而不是 class 实例创建的表示组件。
因为它们是展示组件,所以它们不打算有更多的方法或混合或任何东西,它们只是显示数据。
如果你想坚持使用 React v0.14 和 ES2015,你可以像这样创建你的组件
class Component extends React.Component {
componentWillReceiveProps(nextProps) {
console.log('componentWillReceiveProps', nextProps.data.bar);
}
render() {
return <div>Bar {this.props.data.bar}!</div>;
}
}
您现在拥有一个完整的组件,可以具有状态、其他事件处理程序和其他方法。
这里需要注意的一个非常重要的事情是 ES2015 语法不允许混合,因为它们更喜欢继承或函数组合。
希望对您有所帮助!
抱歉,我无法帮助您解决您的附带问题,我没有使用 React with Meteor。
我很期待 Meteor 1.3,这样我就可以导入 React 组件,而不是将它们作为全局组件。
一直在学习本教程 (https://voice.kadira.io/getting-started-with-meteor-1-3-and-react-15e071e41cd1),我注意到我将不得不使用 React-mounter 而不是 Kadira 的 React-Layout
在这些文档中:
https://github.com/kadirahq/react-mounter
我看到 React 组件是这样定义的:
const MainLayout = ({content}) => (
<div>
<header>
This is our header
</header>
<main>
{content}
</main>
</div>
);
而不是像这样的东西
MainLayout = React.createClass({
propTypes: {
content: React.PropTypes.element
},
render() {
return (
<div>
<header>
This is our header
</header>
<main>
{this.content}
</main>
</div>
);
}
});
你能帮我解释一下这里发生了什么吗?另外我该如何使用这种新风格?在哪里定义所有的属性、方法、混入等?
还有一个附带问题,我注意到 React 是作为 npm 包添加的,而不是使用 Meteor add react
。这是我们现在应该添加反应的方式吗?
您可以将组件分为两种类型:容器和展示组件。
有关详细信息,请参阅 this
React v0.14 引入了一种叫做 functional components 的东西,它是通过函数而不是 class 实例创建的表示组件。 因为它们是展示组件,所以它们不打算有更多的方法或混合或任何东西,它们只是显示数据。
如果你想坚持使用 React v0.14 和 ES2015,你可以像这样创建你的组件
class Component extends React.Component {
componentWillReceiveProps(nextProps) {
console.log('componentWillReceiveProps', nextProps.data.bar);
}
render() {
return <div>Bar {this.props.data.bar}!</div>;
}
}
您现在拥有一个完整的组件,可以具有状态、其他事件处理程序和其他方法。
这里需要注意的一个非常重要的事情是 ES2015 语法不允许混合,因为它们更喜欢继承或函数组合。
希望对您有所帮助!
抱歉,我无法帮助您解决您的附带问题,我没有使用 React with Meteor。