2 votes

remplir une sélection avec datajson en utilisant React js

J'essaie de remplir une sélection en utilisant React js, j'utilise l'exemple donné dans la documentation de react js( https://facebook.github.io/react/tips/initial-ajax.html ) , qui utilise jquery pour gérer l'appel ajax, je n'arrive pas à le faire fonctionner, jusqu'à présent j'ai ceci :

ici le codepen : http://codepen.io/parlop/pen/jrXOWB

    //json file called from source : [{"companycase_id":"CTSPROD","name":"CTS-Production"},{"companyc  ase_id":"CTSTESTING","name":"CTS-Testing"}]
//using jquery to make a ajax call
var App = React.createClass({
  getInitialState: function() {
    return {
      opts:[]      
    };
  },

  componentDidMount: function() {
    var source="https://api.myjson.com/bins/3dbn8";
    this.serverRequest = $.get(source, function (result) {
      var arrTen = result[''];
      for (var k = 0; k < ten.length; k++) {
            arrTen.push(<option key={opts[k]} value={ten[k].companycase_id}> {ten[k].name} </option>);
        }

    }.bind(this));
  },

  componentWillUnmount: function() {
    this.serverRequest.abort();
  },

  render: function() {
    return (
      <div>        
        <select id='select1'>
          {this.state.opts}
         </select>
      </div>
    );
  }
});

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

html

<div id="root"></div>

une idée pour le faire fonctionner, merci.

2voto

Bruce Mu Points 548

Vous devez appeler setState pour mettre réellement à jour votre vue. Voici une version réalisable.

//json file called from source : [{"companycase_id":"CTSPROD","name":"CTS-Production"},{"companyc  ase_id":"CTSTESTING","name":"CTS-Testing"}]
//using jquery to make a ajax call
var App = React.createClass({
getInitialState: function() {
    return {
      opts:[]      
    };
},

componentDidMount: function() {
  var source="https://api.myjson.com/bins/3dbn8";
  this.serverRequest = $.get(source, function (result) {
    var arrTen = [];
    for (var k = 0; k < result.length; k++) {
        arrTen.push(<option key={result[k].companycase_id} value={result[k].companycase_id}> {result[k].name} </option>);
    }
    this.setState({
      opts: arrTen
    });
  }.bind(this));
},

  componentWillUnmount: function() {
  this.serverRequest.abort();
},

render: function() {
  return (
    <div>        
      <select id='select1'>
        {this.state.opts}
      </select>
    </div>
  );
 }
});

ReactDOM.render(
   <App />,
  document.getElementById('root')
);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X