<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Poria Sobhanlo</title>
        <link>https://virgool.io/feed/@psobhanlo</link>
        <description>سلام من پوریام.  چند سالی هست به صورت حرفه ای برنامه نویسی میکنم. اوایل با  php کار میکردم . یه سالی هست که تمرکزم بیشتر رو  js هست و با  react و  react native کار میکنم.</description>
        <language>fa</language>
        <pubDate>2026-06-07 10:38:24</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/9178/avatar/xkLV1l.png?height=120&amp;width=120</url>
            <title>Poria Sobhanlo</title>
            <link>https://virgool.io/@psobhanlo</link>
        </image>

                    <item>
                <title>react-helmet | دسترسی به  head در ری اکت</title>
                <link>https://virgool.io/iran-react-community/react-helmet-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-head-%D8%AF%D8%B1-%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-ozpsay1mqvxp</link>
                <description>react-helmetهفتمین رویداد دورهمی جامعه ری‌اکت ایران در ۴ شهر #اصفهان، #تهران، #کرمان و #مشهد در آخرین پنج‌شنبه مهرماه ۹۸ برگزار میشود.این یه ارائه برای این دوری همیه که تصمیم گرفتم اینجا بنویسمش و بمونه.در اخرم ویدیو اموزشی از این ارائه رو میزارم که دوستانی که دوست دارن ببینن.‍ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــخوب react-helmet چیه و چرا باید ازش استفاده کنیم؟ما میدونیم که ری اکت برای اجرا شدن نیاز به یه تگ داره  تو  index.htmlReactDOM.render(myelement, document.getElementById(&#039;root&#039;));خوب همینجوری که میبنید ری اکت میاد تو تگ  root  اجرا میشه و init میکنه.یه مشکل اساسی که ما داریم این موقع اینه که دسترسی ما به قیمت  head مناسب نیست. باید تکه تیکه با شی  documnt تو جاوا اسکریپت کار کنیم.مثلا اگه بخوایم عنوان صفحه رو تو یه کامپوننت عوض کنید باید اینجوری عمل کنیم.class Title extends React.Component{
  componentDidMount(){
    document.title = &amp;quotmy title&amp;quot
  }
  render(){
    return(
      &lt;b&gt; test &lt;/b&gt;
    )
  }
}یا اگه meta ما ثابت هست و تو همه صفحه هات یکی هستش  میتونیم تو  public/index.html  دستی این کدها رو بزاریم مثل:index.html &lt;meta name=&amp;quotgoogle-site-verification&amp;quot content=&amp;quotaojEK &amp;quot /&gt;  //google verification
 &lt;meta name=&amp;quotfontiran.com:license&amp;quot content=&amp;quotxxxxxx&amp;quot /&gt; // license&lt;meta name=&amp;quotsamandehi&amp;quot content=&amp;quot475376701&amp;quot /&gt; مشکل اصلی زمانی هست که ما کلی تگ meta داریم که تو هر صفحه با هم فرق دارن . داینامیک هستن. مثلا:۱ -  The Open Graph protocol //ogp meta۲ - متای شبکه های اجتماعی که صفحات اشتراک گذاری میشن  // &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot;&gt;۳ - schema  ها و کلی چیز های با اپ ما میاره مثل ستاره های گوگل رو...&lt;meta name=&amp;quottwitter:site&amp;quot content=&amp;quot@website-username&amp;quot&gt;&lt;meta property=&amp;quotfb:app_id&amp;quot content=&amp;quotyour_app_id&amp;quot /&gt;این همه توضیح دادم تازه رسیدیم اول خط و بریم سراغ  react-helmet.مثل همه پکیج ها میریم که نصبش کنیمYarn:yarn add react-helmetnpm:npm install --save react-helmetخوب طبق مستنداتش این سری تگ هارو میتونه ساپورت کنهbase //یه تگ قدیمی که ادرس صفحه ای که توش هستیم رو میزاریمbodyAttributes // با این تگ میتونیم ویژگی های کلاس  و ... رو به  body اضافه کنیمhtmlAttributes // این تگم مثل بالا میمونه اما رو تگ  htmllink //  مثل favicon  ,  css external meta // کلا عاشق این تگ متام script  // js external style // میشه دستی تگ style رو توش یه سری css گزاشتtitle //اینم که عنوان صفحه استاین پکیج مال یه تیم به اسم  nfl که وب سایت ورزش فوتبال امریکاییهسایتشون با  react هست و این پکیج رو نوشتن و منتشر کردن.اینم یه نمونه راهنمای برای قسمت های مختلفی که میخواید استفاده کنید ازش.&lt;Helmet
    {/* (optional) set to false to disable string encoding (server-only) */}
    encodeSpecialCharacters={true} // 

    {/*
        (optional) Useful when you want titles to inherit from a template:

        &lt;Helmet
            titleTemplate=&amp;quot%s | MyAwesomeWebsite.com&amp;quot &gt;
            &lt;title&gt;Nested Title&lt;/title&gt;
        &lt;/Helmet&gt;

        outputs:

        &lt;head&gt;
            &lt;title&gt;Nested Title | MyAwesomeWebsite.com&lt;/title&gt;
        &lt;/head&gt;
    */}
    titleTemplate=&amp;quotMySite.com - %s&amp;quot

    {/*
        (optional) used as a fallback when a template exists but a title is not defined

        &lt;Helmet
            defaultTitle=&amp;quotMy Site&amp;quot
            titleTemplate=&amp;quotMy Site - %s&amp;quot
        /&gt;

        outputs:
        &lt;head&gt;
            &lt;title&gt;My Site&lt;/title&gt;
        &lt;/head&gt;
    */}
    defaultTitle=&amp;quotMy Default Title&amp;quot

    {/* (optional) callback that tracks DOM changes */}
    ClientState={(newState, addedTags, removedTags) =&gt; console.log(newState, addedTags, removedTags)}
&gt;
    {/* html attributes */}
    &lt;html lang=&amp;quoten&amp;quot amp /&gt;

    {/* body attributes */}
    &lt;body className=&amp;quotroot&amp;quot /&gt;

    {/* title attributes and value */}
    &lt;title itemProp=&amp;quotname&amp;quot lang=&amp;quoten&amp;quot&gt;My Plain Title or {`dynamic`} title&lt;/title&gt;

    {/* base element */}
    &lt;base target=&amp;quot_blank&amp;quot href=&amp;quothttp://mysite.com/&amp;quot /&gt;

    {/* multiple meta elements */}
    &lt;meta name=&amp;quotdescription&amp;quot content=&amp;quotHelmet application&amp;quot /&gt;
    &lt;meta property=&amp;quotog:type&amp;quot content=&amp;quotarticle&amp;quot /&gt;

    {/* multiple link elements */}
    &lt;link rel=&amp;quotcanonical&amp;quot href=&amp;quothttp://mysite.com/example&amp;quot /&gt;
    &lt;link rel=&amp;quotapple-touch-icon&amp;quot href=&amp;quothttp://mysite.com/img/apple-touch-icon-57x57.png&amp;quot /&gt;
    &lt;link rel=&amp;quotapple-touch-icon&amp;quot sizes=&amp;quot72x72&amp;quot href=&amp;quothttp://mysite.com/img/apple-touch-icon-72x72.png&amp;quot /&gt;
    {locales.map((locale) =&gt; {
        &lt;link rel=&amp;quotalternate&amp;quot href=&amp;quothttp://example.com/{locale}&amp;quot hrefLang={locale} key={locale}/&gt;
    })}

    {/* multiple script elements */}
    &lt;script src=&amp;quothttp://include.com/pathtojs.js&amp;quot type=&amp;quottext/javascript&amp;quot /&gt;

    {/* inline script elements */}
    &lt;script type=&amp;quotapplication/ld+json&amp;quot&gt;{`
        {
            &amp;quot@context&amp;quot: &amp;quothttp://schema.org&amp;quot
        }
    `}

    {/* noscript elements */}
    &lt;noscript&gt;{`
        &lt;link rel=&amp;quotstylesheet&amp;quot type=&amp;quottext/css&amp;quot href=&amp;quotfoo.css&amp;quot /&gt;
    `}&lt;/noscript&gt;

    {/* inline style elements */} 
    &lt;style type=&amp;quottext/css&amp;quot&gt;{`
        body {
            background-color: blue;
        }
    `}&lt;/style&gt;
&lt;/Helmet&gt;
در اخرم بگم که استفاده از این  پکیج اجباری نیست. اما اگه لازم دارید تو گوگل رتبه ای داشته باشید حتما حتما حتما از این متا ها استفاده کنید</description>
                <category>Poria Sobhanlo</category>
                <author>Poria Sobhanlo</author>
                <pubDate>Wed, 16 Oct 2019 22:45:22 +0330</pubDate>
            </item>
            </channel>
</rss>