Recherche…


Remarques

React est une bibliothèque JavaScript pour créer des interfaces utilisateur. C'est open source , développé et maintenu par Facebook. Meteor prend en charge la production de React.

Ressources:

Configuration et "Hello World"

Ajouter Réagissez à votre projet:

meteor npm install --save react react-dom react-mounter

Créez le fichier client/helloworld.jsx pour afficher un composant React simple:

import React, { Component } from 'react';
import { mount } from 'react-mounter';

// This component only renders a paragraph containing "Hello World!"
class HelloWorld extends Component {
  render() {
    return <p>Hello World!</p>;
  }
}

// When the client application starts, display the component by mounting it to the DOM.
Meteor.startup(() => {
  mount(HelloWorld);
});

Créer un conteneur réactif à l'aide de createContainer

Disons qu'il y a une collection appelée Todos et que le paquet de autopublish est ajouté. Voici le composant de base.

import { createContainer } from 'meteor/react-meteor-data';
import React, { Component, PropTypes } from 'react';
import Todos from '/imports/collections/Todos';

export class List extends Component {
  render() {
    const { data } = this.props;
    return (
      <ul className="list">
        {data.map(entry => <li {...entry} />)}
      </ul>
    )
  }
}

List.propTypes = {
  data: PropTypes.array.isRequired
};

En bas, vous pouvez ajouter un conteneur pour alimenter les données réactives dans le composant. Ça ressemblerait à ça.

export default createContainer(() => {
  return {
    data: Todos.find().fetch()
  };
}, List);

Affichage d'une collection MongoDB

Cet exemple montre comment une collection MongoDB peut être affichée dans un composant React. La collection est continuellement synchronisée entre le serveur et le client, et la page est instantanément mise à jour lorsque le contenu de la base de données change.

Pour connecter des composants React et des collections Meteor, vous aurez besoin du paquet react-meteor-data .

$ meteor add react-meteor-data
$ meteor npm install react-addons-pure-render-mixin

Une collection simple est déclarée dans both/collections.js . Chaque fichier source des both répertoires est à la fois un code côté client et un code côté serveur:

import { Mongo } from 'meteor/mongo';

// This collection will contain a list of random numbers
export const Numbers = new Mongo.Collection("numbers");

La collection doit être publiée sur le serveur. Créez une publication simple dans server/publications.js :

import { Meteor } from 'meteor/meteor';
import { Numbers } from '/both/collections.js';

// This publication synchronizes the entire 'numbers' collection with every subscriber
Meteor.publish("numbers/all", function() {
  return Numbers.find();
});

En utilisant la fonction createComponent , nous pouvons transmettre des valeurs réactives (comme la collection Numbers ) à un composant React. client/shownumbers.jsx :

import React from 'react';
import { createContainer } from 'meteor/react-meteor-data';
import { Numbers } from '/both/collections.js';

// This stateless React component renders its 'numbers' props as a list
function _ShowNumbers({numbers}) {
  return <div>List of numbers:
    <ul>
      // note, that every react element created in this mapping requires 
      // a unique key - we're using the _id auto-generated by mongodb here
      {numbers.map(x => <li key={x._id}>{x.number}</li>)}
    </ul>
  </div>;
}

// Creates the 'ShowNumbers' React component. Subscribes to 'numbers/all' publication,
// and passes the contents of 'Numbers' as a React property.
export const ShowNumbers = createContainer(() => {
  Meteor.subscribe('numbers/all');
  return {
    numbers: Numbers.find().fetch(),
  };
}, _ShowNumbers);

Initialement, la base de données est probablement vide.

capture d'écran avant d'ajouter des données

Ajoutez des entrées à MongoDB et observez la mise à jour automatique de la page.

$ meteor mongo 
MongoDB shell version: 3.2.6
connecting to: 127.0.0.1:3001/meteor

meteor:PRIMARY> db.numbers.insert({number: 5});
WriteResult({ "nInserted" : 1 })

meteor:PRIMARY> db.numbers.insert({number: 42});
WriteResult({ "nInserted" : 1 })

capture d'écran après l'ajout de données



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow