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';।