如何管理迭代数组REACT中每个索引的状态
How do I manage the state of each index in an iterated over array REACT
我对React非常陌生,但对javascript非常熟悉。在开始使用React时遇到了非常困难的情况,我想知道是否有人能向我解释我应该如何管理以下三个按钮的状态。
我的主要组成部分:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
var classNames = require('classnames');
import classnames from 'classnames';
import Fans from './Buttons'
export default class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
Buttons:[
{ src: '/src/images/1.svg',
button: 1
},
{ src: '/src/images/2.svg',
button: 2
},
{
src: '/src/images/3.svg',
button: 3
}
]
}
}
render() {
var buttons = this.state.Buttons.map(function(button){
return(<Buttons key={button.button}
buttNum={button.button}
src={button.src}
/>);
})
return (
<div>
{buttons}
</div>
);
}
};
我的按钮组件:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import classnames from 'classnames';
var classNames = require('classnames');
export default class Buttons extends React.Component {
constructor(props) {
super(props);
this.state = {isActive: false}
this.selectButton = this.selectButton.bind(this)
}
selectButton() {
let active = !this.state.isActive;
this.setState({isActive: active})
}
render() {
let classes = classnames('btn-success', {selected: this.state.isActive});
return (
<img src={this.props.src}
buttNum={this.props.key}
onClick={this.selectButton}
className={classes} />
);
}
};
如何管理各个按钮的状态?!为什么这很难实现。。。使用jQuery或Angular,这可以用5行代码完成!
我只是想让"selected"类一次只对一个按钮可用——相反,selected可以在单个按钮上切换,但我不知道如何使用我当前的selectButton()单击处理程序来管理所有按钮的状态。目前我只能访问被点击的按钮的状态。。。
如有任何帮助,我们将不胜感激!谢谢
您希望处理父(主)组件的所有状态。主状态中的每个Button项都应包含isActive
,并且只能在主组件中进行更改。子组件应该是"哑的",不知道状态或能够更改状态。如果您将调用onChange
的函数作为道具传递给子组件,它可以在主组件中触发该函数并更改那里的状态。在下面找到一个起点来做你想要做的事情。
主要部件:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
var classNames = require('classnames');
import classnames from 'classnames';
import Fans from './Buttons'
export default class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
Buttons:[
{ src: '/src/images/1.svg',
button: 1,
isActive: false
},
{ src: '/src/images/2.svg',
button: 2,
isActive: false
},
{
src: '/src/images/3.svg',
button: 3,
isActive: fasle
}
]
}
}
changeActive(index) {
var buttonArray = this.state.Buttons;
for (var i = 0; i < Buttons.length; i++) {
let active = !buttonArray[i].isActive;
if (index - 1 === index) {
buttonArray[i].isActive = active;
} else {
buttonArray[i].isActive = false;
}
}
this.setState({Buttons : buttonArray});
}
render() {
var buttons = this.state.Buttons.map(function(button){
return(<Buttons key={button.button}
buttNum={button.button}
src={button.src},
changeActive={this.changeActive}
/>);
})
return (
<div>
{buttons}
</div>
);
}
};
按钮组件:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import classnames from 'classnames';
var classNames = require('classnames');
export default class Buttons extends React.Component {
constructor(props) {
super(props);
this.state = {isActive: false}
this.selectButton = this.selectButton.bind(this)
}
selectButton() {
this.props.changeActive(this.props.buttNum);
}
render() {
let classes = classnames('btn-success', {selected: this.state.isActive});
return (
<img src={this.props.src}
buttNum={this.props.key}
onClick={this.selectButton}
className={classes} />
);
}
};
相关文章:
- 名称输入的索引
- 在jQuery中获取表的行索引
- 事件和状态
- 测试索引值是否等于某个数字的倍数
- 循环遍历数组中的特定索引
- 按照选项卡索引的顺序循环一个jQuery选择
- 获取选择框的状态
- 在JavaScript中通过索引从对象数组中获取值
- 相位器状态未捕获参考错误
- 如何更改reactjs中外部/独立组件的状态或属性
- 使url匹配'/''/索引'和'/index.html'到单一状态
- 在不改变状态的情况下,根据减少器中的给定索引更改嵌套数组值
- 如何管理迭代数组REACT中每个索引的状态
- 如何在索引视图中的Ruby on Rails中使用JavaScript切换项目的状态
- UI 路由器不断重定向到索引,并且不加载状态/视图
- 如何使用 ui-router 将子项或孙项状态设置为默认索引状态
- 在React中,我如何将用户重定向回状态已更改的索引
- 错误:无法解析'storysolo'从状态'索引'
- 当编辑状态为真时,如何才能使add函数仅更改所选索引的内容
- 尝试从状态数组从索引进行拼接,但最终从第一个索引拼接到最后一个索引