Объект отсутствует в подпорках - alt
Я новичок, чтобы реагировать. В моем react+flux+alt+ES6
Приложение У меня есть три свойства для поиска действий. Когда я пытаюсь установить значения по умолчанию, я получаю ошибки.
Действие:
import alt from 'altInstance';
import AttributeSectionWebAPIUtils from 'utils/AttributeSectionWebAPIUtils';
class SearchActions {
searchAttribute(data) {
this.dispatch(data);
AttributeSectionWebAPIUtils.search(data)
.done(function success() {
// We might not need to do anything it successfully added due to optimistic updates.
})
.fail(function failure() {
// dispatch an event if fails to notify user that it has failed
});
}
}
export default alt.createActions(SearchActions);
Хранить:
import SearchActions from 'actions/attributeSection/SearchActions';
import alt from 'altInstance';
class AttributeSectionStore {
constructor() {
this.state = {
obj: {
attributeSectionId: '',
name: '',
description: ''
}
};
this.bindListeners({
handleSearch: SearchActions.SEARCHATTRIBUTE
});
}
handleSearch(data) {
this.emitChange(data);
// otherwise, it is unchanged.
}
}
экспорт по умолчанию alt.createStore(AttributeSectionStore, 'AttributeSectionStore');
Посмотреть:
import React from 'react';
import { Input } from 'react-bootstrap';
import { ButtonToolbar } from 'react-bootstrap';
import { Button } from 'react-bootstrap';
import SearchActions from 'actions/attributeSection/SearchActions';
import AttributeSectionStore from 'stores/attributeSection/SearchStore';
// import styles from 'scss/_common';
/*
* Code modified from https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/components/TopicTextInput.react.js
*/
export default class AttributeSectionSearch extends React.Component {
static getPropsFromStores() {
return AttributeSectionStore.getState();
}
searchAttribute = () => {
SearchActions.searchAttribute();
}
render() {
return (
<div className="container">
<div className="row">
<h1>Attribute Sections</h1>
<h3>Search Attribute Section</h3>
</div>
<div className="col-md-12">
<div className="pull-right" >
<Button bsStyle="primary">New</Button>
</div>
</div>
<form className="form-horizontal">
<div className="row">
<div className="col-md-6">
<Input type="text" label="Attribute Section ID" labelClassName="col-xs-3" wrapperClassName="col-xs-6" value={this.props.obj.attributeSectionId}/>
<Input type="textarea" label="Description" labelClassName="col-xs-3" wrapperClassName="col-xs-6" value={this.props.obj.description}/>
</div>
<div className="col-md-6 form-group">
<Input type="text" label="Name" labelClassName="col-xs-2" wrapperClassName="col-xs-6" value={this.props.obj.name}/>
</div>
</div>
<div className="col-xs-2 col-xs-offset-10">
<ButtonToolbar>
<Button bsStyle="primary" onClick={this.searchAttribute}>Search</Button>
<Button type="reset">Reset</Button>
</ButtonToolbar>
</div>
</form>
</div>
);
}
}
AttributeSectionSearch.propTypes = {
attributeSectionId: React.PropTypes.string,
name: React.PropTypes.string,
description: React.PropTypes.string
};
Как я могу получить объект в реквизит?
1 ответ
Решение
В общем, getState()
получает все объекты, которые вы определили в `this'. в вашем конструкторе.
В вашем случае вы определили this.state
в вашем магазине конструктор.
Так что в вашем компоненте вы должны получить доступ this.props.state.obj
, На самом деле это довольно запутанное имя.
Лучшее решение, вероятно, состоит в том, чтобы изменить ваш код в конструкторе с:
this.state = {
obj: {
attributeSectionId: '',
name: '',
description: ''
}
чтобы:
this.obj = {
attributeSectionId: '',
name: '',
description: ''
}
Тогда вы сможете получить доступ this.props.obj