'.onChange'方法没有't获取'输入'在React.js中
The '.onChange' method doesn't get the newest info of 'Input' in React.js
import reqwest from './public/reqwest.js'
const PAGE_SIZE = 10
class App extends Component {
constructor() {
super()
this.state = {
page: 1,
arr: []
}
}
singleInfo(page) {
reqwest({
url: 'https://cnodejs.org/api/v1/topics',
data: {
limit: PAGE_SIZE,
page: this.state.page
},
success: function (data) {
this.setState({
arr: data.data
})
}.bind(this)
})
}
changeState(newState) {
this.setState(newState)
this.singleInfo(newState.page)
}
render() {
return (
<div>
<Menu val={this.state.page} changeParentState={(state) => this.changeState(state)} />
<List arr={this.state.arr} />
</div>
);
}
}
class Menu extends Component {
handleChange(event) {
if(event.target.value) {
this.props.changeParentState({
page: event.target.value
})
}
}
render() {
console.log(this)
return <input type="text" defaultValue={this.props.val} onChange={(event) => this.handleChange(event)} />
}
}
class List extends Component {
render() {
return <ul>
{
this.props.arr.map((ele) => {
return (
<li key={ ele.id }>
<p className="title">{ ele.title }</p>
<p className="date">{ ele.create_at }</p>
<p className="author">{ ele.author.loginname }</p>
</li>
)
})
}
</ul>
}
}
我无法通过Menu module
中的onChange
获得input
的当前值。
在我的代码中,该应用程序有两个子组件——List
&Menu
。您可以在Menu
组件中输入页面,因此它会发送Ajax((来获取页面的信息。但事实是:在我将input的值更改为1->10之后,ajax得到的值为1。
在此之前,我知道keyup
或keydown
与keypress
之间的区别。它们具有跨浏览器的差异。但我只是想通过React.js获得输入的当前值。
首先,更改:
<input type="text" defaultValue={this.props.val} onChange={(event) => this.handleChange(event)} />
收件人:
<input type="text" value={this.props.val} onChange={(event) => this.handleChange(event)} />
以便您的输入在重新渲染时更新为正确的值。
其次,请记住setState
通常是异步的。因此,不要期望在调用setState
之后立即更改状态。
您的changeState
方法在这方面是好的,因为它将newState
传递到singlePageRequest
。然而,singlePageRequest
不使用所提供的值,而是使用this.state.page
。将其更改为使用提供的值,您应该可以:
singleInfo(page) {
reqwest({
url: 'https://cnodejs.org/api/v1/topics',
data: {
limit: PAGE_SIZE,
page: page
},
success: function (data) {
this.setState({
arr: data.data
})
}.bind(this)
})
}
相关文章:
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React 15使用空字符串删除输入值
- 在 React-native 中按下按钮时向文本输入值添加一个
- React Redux-Dispatch检索输入值
- React-检测'输入'更改事件中的按键
- React设置输入's值
- React从动态添加的输入文本字段中获取值
- 如何在react js-JSX中动态创建输入文本字段
- React.js引导添加或删除输入字段
- 使用React清除输入字段
- 为什么 react 将输入[类型=“文本”] 字段设为只读,除非我提供 onChange 回调
- 如何在 React 中编辑多个输入控制组件
- 在 React 的 html 输入中在美分和美元之间进行转换
- 在 React 中向组件添加新输入并跟踪状态
- 更新输入类型时间的值(重新渲染)并使用 React 再次关注元素
- 获取已从日期选择器中选择的输入的 React 状态
- 如何在 react-native 中将文本输入在页面上居中
- React:输入验证
- React输入复选框选择所有组件
- React输入文本默认值和onblur函数使输入文本只读