ReactJS onClick event on an array element

Santiago Guerra

I need to select images in an image grid. Currently, I can only select one image at a time. When selecting one, the other unselects. I'd like to select every image I want (many images selected at a time). I can't activate a isToggle boolean on each element with onClick event.

class Gallery extends Component{
  constructor(props) {
    super(props);
    this.state = {
    //isToggleOn: true,
    selected: '',
    };

    this.handleClick = this.handleClick.bind(this);
    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleClick = key => {
    this.setState(state => ({
      //isToggleOn: !state.isToggleOn,
      selected: key,
    }));
    //console.log(this.state)
  } 

  render(){
  //const classes = useStyles();
  return (
    <Container>
    <Row >
    <Col>
    <div style={styles.root}>
      <GridList cellHeight={160} style={styles.gridList} cols={3}>
        {tileData.map((tile,i) => (
          <GridListTile key={i} cols={tile.cols || 1} onClick={() => this.handleClick(tile)} >
            <img src={tile.img} alt={tile.title} style={this.state.selected === tile  ? styles.inputClicked:styles.inputNormal} />
          </GridListTile>
        ))}
      </GridList>
    </div>
    </Col>
    </Row>
    </Container>
  );
}
}


export default Gallery;

I can only select one image at a time. I expect to select many at a time.
jsdeveloper

When the tile gets clicked, you need to add to an array of selected tiles like this:

handleClick = tile => {
    this.setState({
      selected: this.state.selected.concat([tile]),
    });
  } 

then when rendering, you can check if the tile is selected something like this:

<img src={tile.img} alt={tile.title} style={isSelected(this.state.selected, tile)  ? styles.inputClicked:styles.inputNormal} />

with:

isSelected = (selected, tile) => {
    // some logic to check that the tile is already selected e.g.
    return selected.find(tileItem => tileItem.title === tile.title)
}

Ensure to initialise your selected state to [] in constructor :

this.state = {
    selected: [],
    };

UPDATE:

If you want to remove tiles too, you'd have to do something like this:

handleClick = tile => {
    const { selected } = this.state;
    if(selected.find(item ==> item.title === tile.title)) {
       // need to remove tile
       this.setState({
         selected: selected.filter(item => item.tile !== tile.title),
       });
    } else {
       this.setState({
         selected: this.state.selected.concat([tile]),
       });
    }
  }

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Javascript

ReactJS: onClick change element

From Dev

WKScriptMessageHandler won't Listen to 'onclick' or 'click' event on a button element on a webpage. The web page is developed using Reactjs

From Dev

reactjs Onclick event ,sending value to parent

From Dev

How to use onClick event on Link: ReactJS?

From Dev

How to delete element onclick in Reactjs?

From Dev

How to Reactjs Link to and onclick event handling at once?

From Dev

how to write onclick event in reactjs?

From Dev

OnClick event handler redirect to in reactjs?

From Dev

ReactJS onClick event to another component

From Dev

Prevent onclick event of appended element?

From Dev

onCLick event on mapped array's element

From Dev

ReactJS- render modal component on onclick event

From Dev

ReactJs - accessing state in the onclick event

From Dev

ReactJS Button not calling the onClick event

From Dev

How to change a text inside an element, corresponding to an onClick event in ReactJs?

From Dev

Attaching onclick event to element is not working

From Dev

Multiple event handlers for the same event and element with Reactjs

From Dev

how to show array element one by one onclick event in javascript?

From Dev

onclick event not working for svg element

From Dev

onClick event doesn't act in ReactJS

From Dev

onClick event on an array element javascript React

From Dev

ReactJS- Radio Button "onClick" event is not triggered

From Dev

How to render child component with onclick event in reactjs?

From Dev

Weird bug in ReactJs - onClick event

From Dev

Onclick event to add and remove element

From Dev

Reactjs How to pass parameter in onclick event in jsx

From Dev

ReactJS onclick toggle class event multiple times

From Dev

onClick event that checks if an array includes the element

From Dev

can not add a onClick event in reactjs

Related Related

  1. 1

    ReactJS: onClick change element

  2. 2

    WKScriptMessageHandler won't Listen to 'onclick' or 'click' event on a button element on a webpage. The web page is developed using Reactjs

  3. 3

    reactjs Onclick event ,sending value to parent

  4. 4

    How to use onClick event on Link: ReactJS?

  5. 5

    How to delete element onclick in Reactjs?

  6. 6

    How to Reactjs Link to and onclick event handling at once?

  7. 7

    how to write onclick event in reactjs?

  8. 8

    OnClick event handler redirect to in reactjs?

  9. 9

    ReactJS onClick event to another component

  10. 10

    Prevent onclick event of appended element?

  11. 11

    onCLick event on mapped array's element

  12. 12

    ReactJS- render modal component on onclick event

  13. 13

    ReactJs - accessing state in the onclick event

  14. 14

    ReactJS Button not calling the onClick event

  15. 15

    How to change a text inside an element, corresponding to an onClick event in ReactJs?

  16. 16

    Attaching onclick event to element is not working

  17. 17

    Multiple event handlers for the same event and element with Reactjs

  18. 18

    how to show array element one by one onclick event in javascript?

  19. 19

    onclick event not working for svg element

  20. 20

    onClick event doesn't act in ReactJS

  21. 21

    onClick event on an array element javascript React

  22. 22

    ReactJS- Radio Button "onClick" event is not triggered

  23. 23

    How to render child component with onclick event in reactjs?

  24. 24

    Weird bug in ReactJs - onClick event

  25. 25

    Onclick event to add and remove element

  26. 26

    Reactjs How to pass parameter in onclick event in jsx

  27. 27

    ReactJS onclick toggle class event multiple times

  28. 28

    onClick event that checks if an array includes the element

  29. 29

    can not add a onClick event in reactjs

HotTag

Archive