LinkButton
উপাদান - প্রতিক্রিয়া রাউটার ভি 4 এর একটি সমাধান
প্রথমত, এই প্রশ্নের আরও অনেক উত্তর সম্পর্কে একটি নোট।
Est নেস্টিং <button>
এবং <a>
বৈধ এইচটিএমএল নয়। ⚠️
এখানে যে কোনও উত্তর যা button
প্রতিক্রিয়া রাউটার Link
উপাদান (বা তদ্বিপরীত) একটি এইচটিএমএল নীড় বাঁধার পরামর্শ দেয় একটি ওয়েব ব্রাউজারে রেন্ডার করে তবে এটি শব্দার্থ, অ্যাক্সেসযোগ্য বা বৈধ এইচটিএমএল নয়:
<a stuff-here><button>label text</button></a>
<button><a stuff-here>label text</a></button>
☝ validator.w3.org সঙ্গে এই মার্কআপ যাচাই করতে ক্লিক করুন ☝
বোতামগুলি সাধারণত লিঙ্কগুলির অভ্যন্তরে না রাখায় এটি লেআউট / স্টাইলিংয়ের সমস্যার দিকে নিয়ে যেতে পারে।
<button>
প্রতিক্রিয়া রাউটার <Link>
উপাদান সহ একটি এইচটিএমএল ট্যাগ ব্যবহার করা ।
আপনি যদি কেবল এইচটিএমএল button
ট্যাগ চান ...
<button>label text</button>
… তারপরে, এখানে একটি বোতামটি পাওয়ার জন্য সঠিক উপায় যা প্রতিক্রিয়া রাউটারের Link
উপাদানটির মতো কাজ করে ...
এই উপাদানগুলি আপনার উপাদানগুলিতে প্রেরণ করতে রাউটারের সাথে রাউটারের সাথে প্রতিক্রিয়া ব্যবহার করুন :
history
location
match
staticContext
LinkButton
উপাদান
LinkButton
আপনার অনুলিপি / পাস্তা দেওয়ার জন্য এখানে একটি উপাদান রয়েছে :
import React from 'react'
import PropTypes from 'prop-types'
import { withRouter } from 'react-router'
const LinkButton = (props) => {
const {
history,
location,
match,
staticContext,
to,
onClick,
...rest
} = props
return (
<button
{...rest} // `children` is just another prop!
onClick={(event) => {
onClick && onClick(event)
history.push(to)
}}
/>
)
}
LinkButton.propTypes = {
to: PropTypes.string.isRequired,
children: PropTypes.node.isRequired
}
export default withRouter(LinkButton)
তারপরে উপাদানটি আমদানি করুন:
import LinkButton from '/components/LinkButton'
উপাদানটি ব্যবহার করুন:
<LinkButton to='/path/to/page'>Push My Buttons!</LinkButton>
আপনার যদি অনক্লিক পদ্ধতি প্রয়োজন হয়:
<LinkButton
to='/path/to/page'
onClick={(event) => {
console.log('custom event here!', event)
}}
>Push My Buttons!</LinkButton>
আপডেট: আপনি যদি উপরের লেখার পরে উপলভ্য অন্য মজাদার বিকল্পটি সন্ধান করছেন তবে এই ব্যবহারের রাউটার হুকটি দেখুন ।
import { Button } from 'react-bootstrap';
।