React/Meteor/Flowrouter: передача данных

Я пытался найти способ использования данных, переданных через параметр маршрутизации Flowrouters, с помощью reactjs.

Я пытаюсь добиться того, чтобы когда пользователь создает ферму с определенными атрибутами и вставляет эти данные в коллекцию монго, тогда в другом представлении я мог бы обновить значения. поэтому мне нужно было бы каким-то образом передать _id пользователей, например, в это представление обновления.

В настоящее время у меня есть этот код следующим образом:

FlowRouter.route("/serviceplan/general/basic/:postId",{

name: "BasicInformation",
action(params){
    renderTestLayout(<BasicInfo params={params}/>);
}});

Код просмотра:

BasicInfo = React.createClass({

 propTypes: {

     params: React.PropTypes.object.isRequired,
 },

mixins: [ReactMeteorData],

getMeteorData(){
    return{
        owner: Farms.findOne({farmname: this.props.params.postId})

    }
},

updateFarm(){
    console.log("updated!");
},

render(){

    console.log(this.data.owner);
    console.log(this.data.owner.address);

    return( 
        <div>

            <div className="col-sm-4">
            <h1>Basic information</h1>
            <form onSubmit={this.updateFarm}>
                <label>Name:</label>
                    <input type="text" ref="fname" className="form-control" defaultValue=""/><br></br>

                <label>Address:</label>
                <input type="text" ref="address" className="form-control" defaultValue=""/><br></br>

                <label>Postalcode:</label>
                <input type="text" ref="postalcode" className="form-control" defaultValue=""/><br></br>

                <label>Area:</label>
                <input type="text" ref="municipality" className="form-control"defaultValue=""/><br></br>

                <input type="submit" value="Update" className="btn btn-default" onClick={this.updateFarm}/>
            </form>
            </div>
        </div>
    );
}

Проблема здесь в том, что когда я перенаправляюсь на этот компонент BasicInfo, данные отлично работают с реквизитами. но когда я пытаюсь отправить изменения, страница перезагружается и приложение вылетает. И это, вероятно, потому, что значение свойства равно null, поскольку оно не было передано этому компоненту.

Каким было бы решение, чтобы я получал значение postId из URL-адреса при каждом обновлении?


person Altf4    schedule 03.03.2016    source источник


Ответы (1)


Я нашел причину сбоя приложения и решение.

Я пытался получить доступ к несуществующим данным.

if(this.data.owner){

        farmname = this.data.owner.farmname;
        address = this.data.owner.address;
        postalcode = this.data.owner.postalcode;
        municipality = this.data.owner.municipality;
        region = this.data.owner.municipality;

Рабочее решение состоит в том, чтобы проверить, не является ли объект данных mongo нулевым, прежде чем обращаться к нему.

person Altf4    schedule 03.03.2016