React - Call method after redirect
up vote
1
down vote
favorite
I have two different links. One is main Page, other is gallery. I have on main page 3 links with method scrollIntoView
onClick that are taking me to different sections. I want to implement method redirecting me from gallery component to main page and when it's done call method scrollIntoView
.
goToContact method:
goToContact = e => {
if (window.location.pathname === "/fotobudka/") {
this.fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}
if (window.location.pathname !== "/fotobudka") {
this.changeUrl();
this.goto();
}
};
Change Url redirect me to main page:
changeUrl() {
return <Redirect to="/fotobudka/" />;
}
When it's done:
goto = () => {
setTimeout(() => {
let fbContactElement = document.getElementById("contact-form");
fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}, 100);
};
My method works perfectly, but I know SetTimeout isn't good solution. I've tried async/await but I think I am not good enough to implement that.
How to refactor this without using SetTimeout function ?
javascript reactjs react-router
add a comment |
up vote
1
down vote
favorite
I have two different links. One is main Page, other is gallery. I have on main page 3 links with method scrollIntoView
onClick that are taking me to different sections. I want to implement method redirecting me from gallery component to main page and when it's done call method scrollIntoView
.
goToContact method:
goToContact = e => {
if (window.location.pathname === "/fotobudka/") {
this.fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}
if (window.location.pathname !== "/fotobudka") {
this.changeUrl();
this.goto();
}
};
Change Url redirect me to main page:
changeUrl() {
return <Redirect to="/fotobudka/" />;
}
When it's done:
goto = () => {
setTimeout(() => {
let fbContactElement = document.getElementById("contact-form");
fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}, 100);
};
My method works perfectly, but I know SetTimeout isn't good solution. I've tried async/await but I think I am not good enough to implement that.
How to refactor this without using SetTimeout function ?
javascript reactjs react-router
Have you tried to usebrowserHistory
? Check this or this
– Marlom
Nov 10 at 18:58
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have two different links. One is main Page, other is gallery. I have on main page 3 links with method scrollIntoView
onClick that are taking me to different sections. I want to implement method redirecting me from gallery component to main page and when it's done call method scrollIntoView
.
goToContact method:
goToContact = e => {
if (window.location.pathname === "/fotobudka/") {
this.fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}
if (window.location.pathname !== "/fotobudka") {
this.changeUrl();
this.goto();
}
};
Change Url redirect me to main page:
changeUrl() {
return <Redirect to="/fotobudka/" />;
}
When it's done:
goto = () => {
setTimeout(() => {
let fbContactElement = document.getElementById("contact-form");
fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}, 100);
};
My method works perfectly, but I know SetTimeout isn't good solution. I've tried async/await but I think I am not good enough to implement that.
How to refactor this without using SetTimeout function ?
javascript reactjs react-router
I have two different links. One is main Page, other is gallery. I have on main page 3 links with method scrollIntoView
onClick that are taking me to different sections. I want to implement method redirecting me from gallery component to main page and when it's done call method scrollIntoView
.
goToContact method:
goToContact = e => {
if (window.location.pathname === "/fotobudka/") {
this.fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}
if (window.location.pathname !== "/fotobudka") {
this.changeUrl();
this.goto();
}
};
Change Url redirect me to main page:
changeUrl() {
return <Redirect to="/fotobudka/" />;
}
When it's done:
goto = () => {
setTimeout(() => {
let fbContactElement = document.getElementById("contact-form");
fbContactElement.scrollIntoView({
behavior: "smooth",
block: "start"
});
}, 100);
};
My method works perfectly, but I know SetTimeout isn't good solution. I've tried async/await but I think I am not good enough to implement that.
How to refactor this without using SetTimeout function ?
javascript reactjs react-router
javascript reactjs react-router
asked Nov 10 at 18:27


Freestyle09
131115
131115
Have you tried to usebrowserHistory
? Check this or this
– Marlom
Nov 10 at 18:58
add a comment |
Have you tried to usebrowserHistory
? Check this or this
– Marlom
Nov 10 at 18:58
Have you tried to use
browserHistory
? Check this or this– Marlom
Nov 10 at 18:58
Have you tried to use
browserHistory
? Check this or this– Marlom
Nov 10 at 18:58
add a comment |
3 Answers
3
active
oldest
votes
up vote
1
down vote
You have to use setState to set a property that will render the inside your render() method.
class MyComponent extends React.Component {
state = {
redirect: false
}
goTo = () => {...}
goToContact = e => {
this.setState({ redirect: true },
()=>goto());
}
render () {
const { redirect } = this.state;
if (redirect) {
return <Redirect to='/fotobudka'/>;
}
return (...)
}
}
You can also see an example in the official documentation: https://reacttraining.com/react-router/web/example/auth-workflow
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
add a comment |
up vote
0
down vote
You can use the componentDidMount()
lifecycle hook for executing some code when a component is loaded. But you have to avoid an infinite update cycle by passing some query param something like doScroll=true
. Now you can simply check inside your componentDidMount()
hook for your query param and execute your scroll function
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
fbContactElement
– Freestyle09
Nov 11 at 20:25
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
add a comment |
up vote
0
down vote
accepted
I solved my issue, in one forum I've checked that via interval we can check if item already exist on page. In React it looks like this:
goto = selector => {
if (window.location.pathname !== "/fotobudka/") {
this.constructor.changeUrl();
}
let checkExist = setInterval(() => {
let element = document.getElementById(selector);
if (element) {
element.scrollIntoView({
behavior: "smooth",
block: "start"
});
clearInterval(checkExist);
}
}, 100);
};
static changeUrl() {
return <Redirect to="/fotobudka/" />;
}
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
You have to use setState to set a property that will render the inside your render() method.
class MyComponent extends React.Component {
state = {
redirect: false
}
goTo = () => {...}
goToContact = e => {
this.setState({ redirect: true },
()=>goto());
}
render () {
const { redirect } = this.state;
if (redirect) {
return <Redirect to='/fotobudka'/>;
}
return (...)
}
}
You can also see an example in the official documentation: https://reacttraining.com/react-router/web/example/auth-workflow
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
add a comment |
up vote
1
down vote
You have to use setState to set a property that will render the inside your render() method.
class MyComponent extends React.Component {
state = {
redirect: false
}
goTo = () => {...}
goToContact = e => {
this.setState({ redirect: true },
()=>goto());
}
render () {
const { redirect } = this.state;
if (redirect) {
return <Redirect to='/fotobudka'/>;
}
return (...)
}
}
You can also see an example in the official documentation: https://reacttraining.com/react-router/web/example/auth-workflow
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
add a comment |
up vote
1
down vote
up vote
1
down vote
You have to use setState to set a property that will render the inside your render() method.
class MyComponent extends React.Component {
state = {
redirect: false
}
goTo = () => {...}
goToContact = e => {
this.setState({ redirect: true },
()=>goto());
}
render () {
const { redirect } = this.state;
if (redirect) {
return <Redirect to='/fotobudka'/>;
}
return (...)
}
}
You can also see an example in the official documentation: https://reacttraining.com/react-router/web/example/auth-workflow
You have to use setState to set a property that will render the inside your render() method.
class MyComponent extends React.Component {
state = {
redirect: false
}
goTo = () => {...}
goToContact = e => {
this.setState({ redirect: true },
()=>goto());
}
render () {
const { redirect } = this.state;
if (redirect) {
return <Redirect to='/fotobudka'/>;
}
return (...)
}
}
You can also see an example in the official documentation: https://reacttraining.com/react-router/web/example/auth-workflow
edited Nov 10 at 19:40
victor zadorozhnyy
251412
251412
answered Nov 10 at 19:16


Ammar Iqbal
213
213
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
add a comment |
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
stackoverflow.com/questions/43230194/…
– victor zadorozhnyy
Nov 10 at 19:17
add a comment |
up vote
0
down vote
You can use the componentDidMount()
lifecycle hook for executing some code when a component is loaded. But you have to avoid an infinite update cycle by passing some query param something like doScroll=true
. Now you can simply check inside your componentDidMount()
hook for your query param and execute your scroll function
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
fbContactElement
– Freestyle09
Nov 11 at 20:25
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
add a comment |
up vote
0
down vote
You can use the componentDidMount()
lifecycle hook for executing some code when a component is loaded. But you have to avoid an infinite update cycle by passing some query param something like doScroll=true
. Now you can simply check inside your componentDidMount()
hook for your query param and execute your scroll function
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
fbContactElement
– Freestyle09
Nov 11 at 20:25
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
add a comment |
up vote
0
down vote
up vote
0
down vote
You can use the componentDidMount()
lifecycle hook for executing some code when a component is loaded. But you have to avoid an infinite update cycle by passing some query param something like doScroll=true
. Now you can simply check inside your componentDidMount()
hook for your query param and execute your scroll function
You can use the componentDidMount()
lifecycle hook for executing some code when a component is loaded. But you have to avoid an infinite update cycle by passing some query param something like doScroll=true
. Now you can simply check inside your componentDidMount()
hook for your query param and execute your scroll function
answered Nov 10 at 19:22


Pommesloch
19310
19310
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
fbContactElement
– Freestyle09
Nov 11 at 20:25
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
add a comment |
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
fbContactElement
– Freestyle09
Nov 11 at 20:25
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Yeah i did that, and my element is undefined
– Freestyle09
Nov 10 at 22:38
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
Which element do you mean?
– Pommesloch
Nov 11 at 18:21
fbContactElement
– Freestyle09
Nov 11 at 20:25
fbContactElement
– Freestyle09
Nov 11 at 20:25
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
Can you create an online demo from your app. so we can help you to debug it?
– Pommesloch
Nov 12 at 20:33
add a comment |
up vote
0
down vote
accepted
I solved my issue, in one forum I've checked that via interval we can check if item already exist on page. In React it looks like this:
goto = selector => {
if (window.location.pathname !== "/fotobudka/") {
this.constructor.changeUrl();
}
let checkExist = setInterval(() => {
let element = document.getElementById(selector);
if (element) {
element.scrollIntoView({
behavior: "smooth",
block: "start"
});
clearInterval(checkExist);
}
}, 100);
};
static changeUrl() {
return <Redirect to="/fotobudka/" />;
}
add a comment |
up vote
0
down vote
accepted
I solved my issue, in one forum I've checked that via interval we can check if item already exist on page. In React it looks like this:
goto = selector => {
if (window.location.pathname !== "/fotobudka/") {
this.constructor.changeUrl();
}
let checkExist = setInterval(() => {
let element = document.getElementById(selector);
if (element) {
element.scrollIntoView({
behavior: "smooth",
block: "start"
});
clearInterval(checkExist);
}
}, 100);
};
static changeUrl() {
return <Redirect to="/fotobudka/" />;
}
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
I solved my issue, in one forum I've checked that via interval we can check if item already exist on page. In React it looks like this:
goto = selector => {
if (window.location.pathname !== "/fotobudka/") {
this.constructor.changeUrl();
}
let checkExist = setInterval(() => {
let element = document.getElementById(selector);
if (element) {
element.scrollIntoView({
behavior: "smooth",
block: "start"
});
clearInterval(checkExist);
}
}, 100);
};
static changeUrl() {
return <Redirect to="/fotobudka/" />;
}
I solved my issue, in one forum I've checked that via interval we can check if item already exist on page. In React it looks like this:
goto = selector => {
if (window.location.pathname !== "/fotobudka/") {
this.constructor.changeUrl();
}
let checkExist = setInterval(() => {
let element = document.getElementById(selector);
if (element) {
element.scrollIntoView({
behavior: "smooth",
block: "start"
});
clearInterval(checkExist);
}
}, 100);
};
static changeUrl() {
return <Redirect to="/fotobudka/" />;
}
answered Nov 12 at 20:38


Freestyle09
131115
131115
add a comment |
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242114%2freact-call-method-after-redirect%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
Have you tried to use
browserHistory
? Check this or this– Marlom
Nov 10 at 18:58