正在更新不工作的组件ReactJs
Updating component not working ReactJs
请帮我一下,因为我被卡住了。我是新手,我正在创建一个组件,该组件从后端获取可用语言的列表并将其显示在下拉列表中,然后,一旦用户选择了一种语言,该组件就应该更新以显示所选的语言。
我面临的问题是,我不知道为什么,但handleClick方法被执行了三次(我有三种可用的语言),无论是在加载页面时,还是在选择新语言时。因此,无论我选择哪种语言,列表中的最后一种语言始终显示为已选择。
如果你能快速看一眼,告诉我如果你看到了可以导致这种奇怪行为的东西,我将不胜感激,因为这件事正在让我发疯。
代码下方:
import React from 'react';
class LocaleSwitcher extends React.Component {
constructor() {
super();
this.render = this.render.bind(this);
this.handleClick = this.handleClick.bind(this);
this.componentDidMount = this.componentDidMount.bind(this);
this.state = {languages: [],selectedLocale:'En'};
//This is only printed once
console.log('constructor called');
}
handleClick(locale) {
this.state.selectedLocale=locale;
// This is printed three times,
// whenever I select a locale or when the page is loaded,why?????
console.log('Selected Locale:' + locale);
}
render() {
var component = this;
component.selectedLanguage = this.props.defaultLanguage;
return (<li>{this.state.selectedLocale}
<ul className="dropdown">
{
this.state.languages.map(function (result, i) {
var url = "data/translations?locale=" + result.text;
return (<li key={i}><a onClick={component.handleClick(result.text)} href="#">{result.text}</a>
</li>);
})
}
</ul>
</li>);
}
componentDidMount() {
var component = this;
$.get('data/languages', function (result) {
component.setState({languages: result});
});
}
};
export class LocaleCurrencySwitcher extends React.Component {
render() {
return (<ul className="switchers">
<LocaleSwitcher defaultLanguage="En"/>
</ul>);
}
};
问题是您实际上是在调用handleClick
方法,而不是将函数作为回调分配给onClick
属性。您应该从方法中删除这些括号,而是将文本作为参数传递。
onClick={component.handleClick.bind(null, result.text)}
在您的情况下,handleClick
方法被调用,而不是用作回调。
相关文章:
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在ReactJs中渲染子组件时重新加载子组件的数据
- 在reactjs组件中预加载数据
- ReactJS-在加载时渲染顶级组件
- 组件未使用ReactJS和React Router进行渲染
- ReactJS中未定义组件
- 我不知道如何正确地将REST响应对象传递给ReactJS子组件
- reactjs-redux,是否可以有一个由2个组件使用的状态
- ReactJS组件中显示的视频未更新
- 组件中的ReactJS意外令牌
- 当写入“;函数“;在ReactJS组件中
- 将可重复使用的组件与ReactJs和Flux一起用于多个存储
- ReactJS中的子-父组件通信
- 如何在reactjs中动态加载组件
- 从子窗体组件ReactJS中获取道具
- 可以't重新渲染子组件reactjs
- React 在点击时渲染其他组件.ReactJS中的最优模式
- 正在更新不工作的组件ReactJs
- 父组件多次重新渲染子组件ReactJS