How can I display images like a deck of cards (stack) sort of like Tinder?












0















As of now, I can display an image the user uploads onto the browser like so.



if (redirectToStackAfterPhotoSubmit) {
return (
<Stack
imagesOnStack={this.state.url || 'http://via.placeholder.com/400x300'}
alt="Uploaded Images"
height="300"
Width="400"
/>
);
}


But this time, I want the user to have the ability to go the next or previous picture with the click of a button. I'm aware my attempt is trying to make a list, I only made it this way just to get idea of what I'm working with.



Directly below is my attempt, What am I doing wrong and how can I fix it?



Here's Upload.js (didn't post everything because it's a large file)



     this.state = {
url: '',
picture: ,
selectedPictureIndex: 0
};

render() {
const redirectToStackAfterPhotoSubmit = this.state.redirectToStackAfterPhotoSubmit;

const { picture } = this.state;

const picList = picture.map(pic => {
return(
<li key={pic.id}>{this.state.url[pic]}</li>
);
});

if (redirectToStackAfterPhotoSubmit) {
return (
<Stack
imagesOnStack={picList || 'http://via.placeholder.com/400x300'}
alt="Uploaded Images"
height="300"
Width="400"
/>
);
}
}


Here's Stack.js:



import React, { Component } from 'react';

class Stack extends Component {
toggleNext() {
console.log("clicked toggleNext()");
if(this.state.selectedPicture === this.state.picture.length - 1) {
return;
}

this.setState(prevState => ({
selectedPicture: prevState.selectedIndex + 1
}));
}

togglePrevious() {
console.log("clicked togglePrevious()");
if(this.state.selectedPicture === 0) {
return;
}

this.setState(prevState => ({
selectedPicture: prevState.selectedPicture - 1
}));
}

render() {
return(
<div>
<img src={this.props.imagesOnStack} alt=""/>
<button onClick={this.toggleNext}>Next</button>
<button onClick={this.togglePrevious}>Prev</button>
</div>
);
}
}

export default Stack;









share|improve this question



























    0















    As of now, I can display an image the user uploads onto the browser like so.



    if (redirectToStackAfterPhotoSubmit) {
    return (
    <Stack
    imagesOnStack={this.state.url || 'http://via.placeholder.com/400x300'}
    alt="Uploaded Images"
    height="300"
    Width="400"
    />
    );
    }


    But this time, I want the user to have the ability to go the next or previous picture with the click of a button. I'm aware my attempt is trying to make a list, I only made it this way just to get idea of what I'm working with.



    Directly below is my attempt, What am I doing wrong and how can I fix it?



    Here's Upload.js (didn't post everything because it's a large file)



         this.state = {
    url: '',
    picture: ,
    selectedPictureIndex: 0
    };

    render() {
    const redirectToStackAfterPhotoSubmit = this.state.redirectToStackAfterPhotoSubmit;

    const { picture } = this.state;

    const picList = picture.map(pic => {
    return(
    <li key={pic.id}>{this.state.url[pic]}</li>
    );
    });

    if (redirectToStackAfterPhotoSubmit) {
    return (
    <Stack
    imagesOnStack={picList || 'http://via.placeholder.com/400x300'}
    alt="Uploaded Images"
    height="300"
    Width="400"
    />
    );
    }
    }


    Here's Stack.js:



    import React, { Component } from 'react';

    class Stack extends Component {
    toggleNext() {
    console.log("clicked toggleNext()");
    if(this.state.selectedPicture === this.state.picture.length - 1) {
    return;
    }

    this.setState(prevState => ({
    selectedPicture: prevState.selectedIndex + 1
    }));
    }

    togglePrevious() {
    console.log("clicked togglePrevious()");
    if(this.state.selectedPicture === 0) {
    return;
    }

    this.setState(prevState => ({
    selectedPicture: prevState.selectedPicture - 1
    }));
    }

    render() {
    return(
    <div>
    <img src={this.props.imagesOnStack} alt=""/>
    <button onClick={this.toggleNext}>Next</button>
    <button onClick={this.togglePrevious}>Prev</button>
    </div>
    );
    }
    }

    export default Stack;









    share|improve this question

























      0












      0








      0








      As of now, I can display an image the user uploads onto the browser like so.



      if (redirectToStackAfterPhotoSubmit) {
      return (
      <Stack
      imagesOnStack={this.state.url || 'http://via.placeholder.com/400x300'}
      alt="Uploaded Images"
      height="300"
      Width="400"
      />
      );
      }


      But this time, I want the user to have the ability to go the next or previous picture with the click of a button. I'm aware my attempt is trying to make a list, I only made it this way just to get idea of what I'm working with.



      Directly below is my attempt, What am I doing wrong and how can I fix it?



      Here's Upload.js (didn't post everything because it's a large file)



           this.state = {
      url: '',
      picture: ,
      selectedPictureIndex: 0
      };

      render() {
      const redirectToStackAfterPhotoSubmit = this.state.redirectToStackAfterPhotoSubmit;

      const { picture } = this.state;

      const picList = picture.map(pic => {
      return(
      <li key={pic.id}>{this.state.url[pic]}</li>
      );
      });

      if (redirectToStackAfterPhotoSubmit) {
      return (
      <Stack
      imagesOnStack={picList || 'http://via.placeholder.com/400x300'}
      alt="Uploaded Images"
      height="300"
      Width="400"
      />
      );
      }
      }


      Here's Stack.js:



      import React, { Component } from 'react';

      class Stack extends Component {
      toggleNext() {
      console.log("clicked toggleNext()");
      if(this.state.selectedPicture === this.state.picture.length - 1) {
      return;
      }

      this.setState(prevState => ({
      selectedPicture: prevState.selectedIndex + 1
      }));
      }

      togglePrevious() {
      console.log("clicked togglePrevious()");
      if(this.state.selectedPicture === 0) {
      return;
      }

      this.setState(prevState => ({
      selectedPicture: prevState.selectedPicture - 1
      }));
      }

      render() {
      return(
      <div>
      <img src={this.props.imagesOnStack} alt=""/>
      <button onClick={this.toggleNext}>Next</button>
      <button onClick={this.togglePrevious}>Prev</button>
      </div>
      );
      }
      }

      export default Stack;









      share|improve this question














      As of now, I can display an image the user uploads onto the browser like so.



      if (redirectToStackAfterPhotoSubmit) {
      return (
      <Stack
      imagesOnStack={this.state.url || 'http://via.placeholder.com/400x300'}
      alt="Uploaded Images"
      height="300"
      Width="400"
      />
      );
      }


      But this time, I want the user to have the ability to go the next or previous picture with the click of a button. I'm aware my attempt is trying to make a list, I only made it this way just to get idea of what I'm working with.



      Directly below is my attempt, What am I doing wrong and how can I fix it?



      Here's Upload.js (didn't post everything because it's a large file)



           this.state = {
      url: '',
      picture: ,
      selectedPictureIndex: 0
      };

      render() {
      const redirectToStackAfterPhotoSubmit = this.state.redirectToStackAfterPhotoSubmit;

      const { picture } = this.state;

      const picList = picture.map(pic => {
      return(
      <li key={pic.id}>{this.state.url[pic]}</li>
      );
      });

      if (redirectToStackAfterPhotoSubmit) {
      return (
      <Stack
      imagesOnStack={picList || 'http://via.placeholder.com/400x300'}
      alt="Uploaded Images"
      height="300"
      Width="400"
      />
      );
      }
      }


      Here's Stack.js:



      import React, { Component } from 'react';

      class Stack extends Component {
      toggleNext() {
      console.log("clicked toggleNext()");
      if(this.state.selectedPicture === this.state.picture.length - 1) {
      return;
      }

      this.setState(prevState => ({
      selectedPicture: prevState.selectedIndex + 1
      }));
      }

      togglePrevious() {
      console.log("clicked togglePrevious()");
      if(this.state.selectedPicture === 0) {
      return;
      }

      this.setState(prevState => ({
      selectedPicture: prevState.selectedPicture - 1
      }));
      }

      render() {
      return(
      <div>
      <img src={this.props.imagesOnStack} alt=""/>
      <button onClick={this.toggleNext}>Next</button>
      <button onClick={this.togglePrevious}>Prev</button>
      </div>
      );
      }
      }

      export default Stack;






      javascript reactjs debugging stack






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 31 '18 at 21:20









      greyskiesgreyskies

      8617




      8617
























          1 Answer
          1






          active

          oldest

          votes


















          0














          For react native, here is a npm package that uses the swipe deck: react-native-swipe-card.



          Github Repos: https://github.com/EQuimper/MyOwnChallenge-RnMovieTinder Packages: https://github.com/meteor-factory/react-native-tinder-swipe-cards



          For React, you can use react-swipe-card



          import Cards, { Card } from 'react-swipe-card'


          const data = ['Alexandre', 'Thomas', 'Lucien']

          const Wrapper = () => {
          return (
          <Cards onEnd={action('end')} className='master-root'>
          {data.map(item =>
          <Card
          onSwipeLeft={action('swipe left')}
          onSwipeRight={action('swipe right')}>
          <h2>{item}</h2>
          </Card>
          )}
          </Cards>
          )
          }





          share|improve this answer


























          • I'm using react.js, would this work for me or no?

            – greyskies
            Dec 31 '18 at 21:29











          • For react, you can use the react-swipe-card

            – smcurrey528
            Dec 31 '18 at 21:32













          • alright, gonna check this out. thanks :D

            – greyskies
            Dec 31 '18 at 22:06











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53991496%2fhow-can-i-display-images-like-a-deck-of-cards-stack-sort-of-like-tinder%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          For react native, here is a npm package that uses the swipe deck: react-native-swipe-card.



          Github Repos: https://github.com/EQuimper/MyOwnChallenge-RnMovieTinder Packages: https://github.com/meteor-factory/react-native-tinder-swipe-cards



          For React, you can use react-swipe-card



          import Cards, { Card } from 'react-swipe-card'


          const data = ['Alexandre', 'Thomas', 'Lucien']

          const Wrapper = () => {
          return (
          <Cards onEnd={action('end')} className='master-root'>
          {data.map(item =>
          <Card
          onSwipeLeft={action('swipe left')}
          onSwipeRight={action('swipe right')}>
          <h2>{item}</h2>
          </Card>
          )}
          </Cards>
          )
          }





          share|improve this answer


























          • I'm using react.js, would this work for me or no?

            – greyskies
            Dec 31 '18 at 21:29











          • For react, you can use the react-swipe-card

            – smcurrey528
            Dec 31 '18 at 21:32













          • alright, gonna check this out. thanks :D

            – greyskies
            Dec 31 '18 at 22:06
















          0














          For react native, here is a npm package that uses the swipe deck: react-native-swipe-card.



          Github Repos: https://github.com/EQuimper/MyOwnChallenge-RnMovieTinder Packages: https://github.com/meteor-factory/react-native-tinder-swipe-cards



          For React, you can use react-swipe-card



          import Cards, { Card } from 'react-swipe-card'


          const data = ['Alexandre', 'Thomas', 'Lucien']

          const Wrapper = () => {
          return (
          <Cards onEnd={action('end')} className='master-root'>
          {data.map(item =>
          <Card
          onSwipeLeft={action('swipe left')}
          onSwipeRight={action('swipe right')}>
          <h2>{item}</h2>
          </Card>
          )}
          </Cards>
          )
          }





          share|improve this answer


























          • I'm using react.js, would this work for me or no?

            – greyskies
            Dec 31 '18 at 21:29











          • For react, you can use the react-swipe-card

            – smcurrey528
            Dec 31 '18 at 21:32













          • alright, gonna check this out. thanks :D

            – greyskies
            Dec 31 '18 at 22:06














          0












          0








          0







          For react native, here is a npm package that uses the swipe deck: react-native-swipe-card.



          Github Repos: https://github.com/EQuimper/MyOwnChallenge-RnMovieTinder Packages: https://github.com/meteor-factory/react-native-tinder-swipe-cards



          For React, you can use react-swipe-card



          import Cards, { Card } from 'react-swipe-card'


          const data = ['Alexandre', 'Thomas', 'Lucien']

          const Wrapper = () => {
          return (
          <Cards onEnd={action('end')} className='master-root'>
          {data.map(item =>
          <Card
          onSwipeLeft={action('swipe left')}
          onSwipeRight={action('swipe right')}>
          <h2>{item}</h2>
          </Card>
          )}
          </Cards>
          )
          }





          share|improve this answer















          For react native, here is a npm package that uses the swipe deck: react-native-swipe-card.



          Github Repos: https://github.com/EQuimper/MyOwnChallenge-RnMovieTinder Packages: https://github.com/meteor-factory/react-native-tinder-swipe-cards



          For React, you can use react-swipe-card



          import Cards, { Card } from 'react-swipe-card'


          const data = ['Alexandre', 'Thomas', 'Lucien']

          const Wrapper = () => {
          return (
          <Cards onEnd={action('end')} className='master-root'>
          {data.map(item =>
          <Card
          onSwipeLeft={action('swipe left')}
          onSwipeRight={action('swipe right')}>
          <h2>{item}</h2>
          </Card>
          )}
          </Cards>
          )
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Dec 31 '18 at 21:33

























          answered Dec 31 '18 at 21:26









          smcurrey528smcurrey528

          12




          12













          • I'm using react.js, would this work for me or no?

            – greyskies
            Dec 31 '18 at 21:29











          • For react, you can use the react-swipe-card

            – smcurrey528
            Dec 31 '18 at 21:32













          • alright, gonna check this out. thanks :D

            – greyskies
            Dec 31 '18 at 22:06



















          • I'm using react.js, would this work for me or no?

            – greyskies
            Dec 31 '18 at 21:29











          • For react, you can use the react-swipe-card

            – smcurrey528
            Dec 31 '18 at 21:32













          • alright, gonna check this out. thanks :D

            – greyskies
            Dec 31 '18 at 22:06

















          I'm using react.js, would this work for me or no?

          – greyskies
          Dec 31 '18 at 21:29





          I'm using react.js, would this work for me or no?

          – greyskies
          Dec 31 '18 at 21:29













          For react, you can use the react-swipe-card

          – smcurrey528
          Dec 31 '18 at 21:32







          For react, you can use the react-swipe-card

          – smcurrey528
          Dec 31 '18 at 21:32















          alright, gonna check this out. thanks :D

          – greyskies
          Dec 31 '18 at 22:06





          alright, gonna check this out. thanks :D

          – greyskies
          Dec 31 '18 at 22:06




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53991496%2fhow-can-i-display-images-like-a-deck-of-cards-stack-sort-of-like-tinder%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas