【发布时间】:2017-05-22 12:47:31
【问题描述】:
我的应用程序的目的是从 api-url 获取一些消息(mes)数组并为每条消息发送答案(subFunction 方法)。之后该消息将从“mes”数组中删除。 'Message' 是一个父组件,负责通过 map 方法获取数据(componentDidMount 事件)和渲染消息。 'MessageItem' 负责从'textarea' 获取价值 - 答案的主体。但我无法将 this.state.value(textarea.value) 从 MessageItem 传输到父组件。如果我将 'subFunction' 放在子组件中,我无法更改 this.state.mes
import React from 'react'
import ReactDOM from 'react-dom'
const url="api-url";
class MessageItem extends React.Component {
constructor(props) {
super(props);
this.state = {
value:'',
};
};
handleChange(event) {
this.setState({value: event.target.value});
}
render() {
return (
<div className="message_wrap" key={this.props.message_id}>
<div className="message_body">
{this.props.message_body}
</div>
<div className="input-field col s12">
<textarea value={this.state.value} onChange={this.handleChange.bind(this)}/>
<label htmlFor="textarea1">
Ответ
</label>
<button onClick={this.props.onClick}>
Отправить
</button>
</div>
</div>
);
}
}
class Message extends React.Component {
constructor(props) {
super(props);
this.state = {
mes:[],
};
};
componentDidMount(){
fetch(url).then(function(response){
return response
}).then(function (response) {
return response.json()
}).then((data)=>{
this.setState({mes:data})
})
}
subFunction(user_id, value) {
/*This method have to send answer with user id and textarea value*/
}
render() {
return (
<div>
{this.state.mes.map((index)=>
(
<MesItem
key={index.message_id}
message_body={index.message_body}
onClick={this.subFunction.bind(this, index.user_id)}
/>
)
)
}
</div>
);
}
}
ReactDOM.render(<Message/>, document.getElementById('container'));
【问题讨论】:
标签: reactjs react-redux