প্রোপটাইপগুলি প্রতিক্রিয়া জানুন: একটি প্রোপের জন্য বিভিন্ন ধরণের প্রোপটাইপগুলিকে মঞ্জুরি দিন


244

আমার কাছে এমন একটি উপাদান রয়েছে যা এর আকারের জন্য একটি প্রস্তাব পায়। প্রোপ হয় স্ট্রিং বা একটি নম্বর প্রাক্তন: "LARGE"বা 17

আমি কি প্রতিক্রিয়া জানাতে পারি Pপ্রপটাইপগুলি জানাতে পারি যে এটি প্রোপটাইপস বৈধতার মধ্যে এক বা অন্য এক হতে পারে?

আমি যদি ধরণটি নির্দিষ্ট না করি তবে আমি একটি সতর্কতা পেয়েছি: prop type `size` is invalid; it must be a function, usually from React.PropTypes.

MyComponent.propTypes = {
    size: React.PropTypes
}

উত্তর:


572
size: PropTypes.oneOfType([
  PropTypes.string,
  PropTypes.number
]),

আরও জানুন: প্রপাইপগুলি সহ টাইপচেকিং


এর জন্য ধন্যবাদ, আমি যখন আমার ক্লাসে স্থির প্রোপাইপস সেট করে আমার জেস্ট পরীক্ষা চালাচ্ছি তখন এলোমেলো ত্রুটি পাচ্ছি: ReferenceError: oneOfType is not defined- কোনও পরামর্শ? আগাম ধন্যবাদ!!
সারা ইনস ক্যাল্ডারন

আপনি কি নিশ্চিত যে আপনি সঠিকভাবে আমদানি করেছেন import PropTypes from 'prop-types';?
পাউয়ে আন্দ্রেসকুউ

ওহে পাওয়েল - হ্যাঁ, আমরা import PropTypes from 'prop-types';
এগুলিই

1
2019 - প্রোপটাইপস.ওনওফ ব্যবহার করুন
ইমদাদ

26

ডকুমেন্টেশনের উদ্দেশ্যে, স্ট্রিং মানগুলি বৈধ যেগুলি তালিকাভুক্ত করা আরও ভাল:

size: PropTypes.oneOfType([
    PropTypes.number,
    PropTypes.oneOf([ 'SMALL', 'LARGE' ]),
]),

11

এটি আপনার পক্ষে কাজ করতে পারে:

height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),

1
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
রোলস্টুহফলাহার

-4
import React from 'react';              <--as normal
import PropTypes from 'prop-types';     <--add this as a second line

    App.propTypes = {
        monkey: PropTypes.string,           <--omit "React."
        cat: PropTypes.number.isRequired    <--omit "React."
    };

    Wrong:  React.PropTypes.string
    Right:  PropTypes.string

16
হ্যাঁ, প্রোপটাইপস এখন নিজস্ব প্যাকেজে বাস করে, তবে এটি প্রশ্নের উত্তর দেয় না ...
কেভিন অ্যামিরানফ

1
প্রশ্নের সাথে পুরোপুরি প্রাসঙ্গিক নয়
jalooc
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.