mteb/BrightProStackoverflowRetrieval huggingface dataset:
4. Header.js 

    
    
    import React from "react";
    import { useSelector } from "react-redux";
    
    const Header = () => {
      const { userData } = useSelector((state) => (state.user));
      // console.log(userData);
      // you can destructure the userData like this :
      // const {name} = useSelector((state) => state.user.userData);
    
      return (
        <div>
          <p> Hello {userData.name} </p>
          <p> Your age is {userData.age} </p>
        </div>
      );
    };
    
    export default Header;
l, manual query invalidation by cache key  |  declarative, by type OR automatic cache updates on per-entity level, manual query invalidation by cache key   
**Polling** |  yes  |  yes  |  yes  |  yes   
**Parallel queries** |  yes  |  yes  |  yes  |  yes   
**Dependent queries** |  yes  |  yes  |  yes  |  yes   
**Skip queries** |  yes  |  yes  |  yes  |  yes   
**Lagged queries** |  yes  |  yes  |  no  |  ?   
**Auto garbage collection** |  yes  |  yes  |  no  |  ?   
**Normalized caching** |  no  |  no  |  yes  |  yes   
**Infinite scrolling** |  TODO  |  yes  |  requires manual code  |  ?   
**Prefetching** |  yes  |  yes  |  yes  |  yes?   
**Retrying** |  yes  |  yes  |  requires manual code  |  ?   
**Optimistic updates** |  can update cache by hand  |  can update cache by hand  |  ` optimisticResponse ` |  ?   
**Manual cache manipulation** |  yes  |  yes  |  yes  |  yes   
**Platforms** |  hooks for React, everywhere Redux works  |  hooks for React  |  various  |  various   
  
##  Further Information  ​

  * The [ React Query "Comparison" page ](https://tanstack.com/query/latest/docs/react/comparison) has an additional detailed feature set comparison table and discussion of capabilities 
  * Urql maintainer Phil Pluckthun wrote [ an excellent explanation of what a "normalized cache" is and how Urql's cache works ](https://kitten.sh/graphql-normalized-caching)
  * The [ RTK Query "Cache Behavior" page ](/rtk-query/usage/cache-behavior#tradeoffs) has further details on why RTK Query does not implement a normalized cache 

Last updated  on ** Apr 28, 2023  **

[ Previous  RTK Query Overview  ](/rtk-query/overview) [ Next  Examples
](/rtk-query/usage/examples)

  * When Should You Use RTK Query? 
    * Unique Capabilities 
  * Tradeoffs 
    * No Normalized or Deduplicated Cache 
    * Bundle Size 
  * Comparing Feature Sets 
  * Further Information 

Docs

  * [ Getting Started ](/introduction/getting-started)
  * [ Tutorials ](/tutorials/overview)
  * [ Usage Guide ](/usage/usage-guide)
  * [ API Reference ](/api/configureStore)
  * [ RTK Query ](/rtk-query/overview)

Community

  * [ Stack Overflow  ](http://stackoverflow.com/questions/tagged/redux)
  * [ Discord  ](https://discord.gg/0ZcbPKXt5bZ6au5t)

More

  * [ GitHub  ](https://www.github.com/reduxjs/redux-toolkit)
  * [ ![Deploys by Netlify](https://www.netlify.com/img/global/badges/netlify-light.svg) ](https://www.netlify.com)

![Redux Logo](/img/redux_white.svg) ![Redux Logo](/img/redux_white.svg)

Copyright © 2015–2024 Dan Abramov and the Redux documentation authors.
)  
    // -> { counter: 12, user: {name: '', age: 22} }  
    console.log(counter.actions.decrement.type)  
    // -> "counter/decrement"  
    store.dispatch(user.actions.setUserName('eric'))  
    // -> { counter: 12, user: { name: 'eric', age: 22} }  
    

Last updated  on ** Feb 21, 2024  **

[ Previous  createAction  ](/api/createAction) [ Next  createAsyncThunk
](/api/createAsyncThunk)

  * Parameters 
    * ` initialState `
    * ` name `
    * ` reducers `
    * The ` reducers ` "creator callback" notation 
    * ` extraReducers `
    * ` reducerPath `
    * ` selectors `
  * Return Value 
    * Selectors 
  * Examples 

Docs

  * [ Getting Started ](/introduction/getting-started)
  * [ Tutorials ](/tutorials/overview)
  * [ Usage Guide ](/usage/usage-guide)
  * [ API Reference ](/api/configureStore)
  * [ RTK Query ](/rtk-query/overview)

Community

  * [ Stack Overflow  ](http://stackoverflow.com/questions/tagged/redux)
  * [ Discord  ](https://discord.gg/0ZcbPKXt5bZ6au5t)

More

  * [ GitHub  ](https://www.github.com/reduxjs/redux-toolkit)
  * [ ![Deploys by Netlify](https://www.netlify.com/img/global/badges/netlify-light.svg) ](https://www.netlify.com)

![Redux Logo](/img/redux_white.svg) ![Redux Logo](/img/redux_white.svg)

Copyright © 2015–2024 Dan Abramov and the Redux documentation authors.
import { Spinner } from '../../components/Spinner'  
    import { PostAuthor } from './PostAuthor'  
    import { TimeAgo } from './TimeAgo'  
    import { ReactionButtons } from './ReactionButtons'  
    import { selectAllPosts, fetchPosts } from './postsSlice'  
      
    const PostExcerpt = ({ post }) => {  
      return (  
        <article className="post-excerpt">  
          <h3>{post.title}</h3>  
          <div>  
            <PostAuthor userId={post.user} />  
            <TimeAgo timestamp={post.date} />  
          </div>  
          <p className="post-content">{post.content.substring(0, 100)}</p>  
      
          <ReactionButtons post={post} />  
          <Link to={`/posts/${post.id}`} className="button muted-button">  
            View Post  
          </Link>  
        </article>  
      )  
    }  
      
    export const PostsList = () => {  
      const dispatch = useDispatch()  
      const posts = useSelector(selectAllPosts)  
      
      const postStatus = useSelector(state => state.posts.status)  
      const error = useSelector(state => state.posts.error)  
      
      useEffect(() => {  
        if (postStatus === 'idle') {  
          dispatch(fetchPosts())  
        }  
      }, [postStatus, dispatch])  
      
      let content  
      
      if (postStatus === 'loading') {  
        content = <Spinner text="Loading..." />  
      } else if (postStatus === 'succeeded') {  
        // Sort posts in reverse chronological order by datetime string  
        const orderedPosts = posts  
          .slice()  
          .sort((a, b) => b.date.localeCompare(a.date))  
      
        content = orderedPosts.map(post => (  
          <PostExcerpt key={post.id} post={post} />  
        ))  
      } else if (postStatus === 'failed') {  
        content = <div>{error}</div>  
      }  
      
      return (  
        <section className="posts-list">  
          <h2>Posts</h2>  
          {content}  
        </section>  
      )  
    }  
    

You might notice that the API calls are taking a while to complete, and that
the loading spinner is staying on screen for a couple seconds. Our mock API
server is configured to add a 2-second delay to all responses, specifically to
help visualize times when there's a loading spinner visible. If you want to
change this behavior, you can open up ` api/server.js ` , and alter this line:
##  Consuming State/Data on the Frontend

    
    
    import { useEffect } from 'react'
    import { useDispatch, useSelector } from 'react-redux'
    import { getPosts } from '../features/posts/postsSlice'
    
    const PostsList = () => {
      const dispatch = useDispatch()
    
      // Get the posts from the store
      const posts = useSelector((state) => state.posts)
    
      // Pull the post properties
      const { postItems, status, error } = posts
    
      useEffect(() => {
        // eslint-disable-next-line no-unused-vars
        let isMounted = true
    
        // If status is 'idle', then fetch the posts data from the API
        if (status === 'idle') {
          dispatch(getPosts())
        }
    
        // Cleanup function
        return () => {
          isMounted = false
        }
        // eslint-disable-next-line react-hooks/exhaustive-deps
      }, [status, dispatch])
    
      let bodyContent
    
      if (status === 'loading') {
        bodyContent = <div className="loader"></div>
      } else if (status === 'successful') {
        // Sort the posts by id in descending order
        const sortedPosts = postItems.slice().sort((a, b) => b.id - a.id)
    
        // Map through the sorted posts and display them
        bodyContent = sortedPosts.map((post) => (
          <div key={post.id}>
            <h3>{post.title}</h3>
            <p>{post.body}</p>
          </div>
        ))
      } else {
        // Display the error message
        bodyContent = <div>{error}</div>
      }
    
      return <div>{bodyContent}</div>
    }
    
    export default PostsList
* [ The finCEN files: Uncovering money laundering patterns in the global banking network ](/posts/finCEN/)
* [ How to build an advanced analytics function ](/posts/building-ai-enterprise/)
* [ Multi-tasking in Python ](/posts/multi-tasking-in-python/)
* [ Geospatial Analysis: Working with MODIS data ](/posts/working-with-MODIS-data/)
* [ Geospatial Analysis: obtaining and pre-processing OpenSource satellite data ](/posts/processing-large-spatial-datasets.md/)
* [ Home ](/)
* [ Podcasts ](/pod)
* [ Videos ](/videos)
* [ Tags ](/tags)
* [ DEV Help ](/help)
* [ Forem Shop ](https://shop.forem.com/)
* [ Advertise on DEV ](/advertise)
* [ DEV Showcase ](/showcase)
* [ About ](/about)
* [ Contact ](/contact)
* [ Guides ](/guides)
* [ Software comparisons ](/software-comparisons)
* [ https://www.atlassian.com/microservices/microservices-architecture/kubernetes-vs-docker ](https://www.atlassian.com/microservices/microservices-architecture/kubernetes-vs-docker)
* [ https://blog.payara.fish/do-you-need-kubernetes ](https://blog.payara.fish/do-you-need-kubernetes)
* [ https://docs.docker.com/build/building/multi-stage/ ](https://docs.docker.com/build/building/multi-stage/)
* [ https://textblob.readthedocs.io/en/dev/quickstart.html#noun-phrase-extraction ](https://textblob.readthedocs.io/en/dev/quickstart.html#noun-phrase-extraction)
* [ https://www.baeldung.com/ops/dockerfile-run-cmd-entrypoint ](https://www.baeldung.com/ops/dockerfile-run-cmd-entrypoint)
* [ https://www.howtogeek.com/devops/how-to-connect-to-localhost-within-a-docker-container/ ](https://www.howtogeek.com/devops/how-to-connect-to-localhost-within-a-docker-container/)
[ JS HOME ](default.asp) [ JS Introduction ](js_intro.asp) [ JS Where To
](js_whereto.asp) [ JS Output ](js_output.asp) [ JS Statements
](js_statements.asp) [ JS Syntax ](js_syntax.asp) [ JS Comments
](js_comments.asp) [ JS Variables ](js_variables.asp) [ JS Let ](js_let.asp) [
JS Const ](js_const.asp) [ JS Operators ](js_operators.asp) [ JS Arithmetic
](js_arithmetic.asp) [ JS Assignment ](js_assignment.asp) [ JS Data Types
](js_datatypes.asp) [ JS Functions ](js_functions.asp) [ JS Objects
](js_objects.asp) [ JS Events ](js_events.asp) [ JS Strings ](js_strings.asp)
[ JS String Methods ](js_string_methods.asp) [ JS String Search
](js_string_search.asp) [ JS String Templates ](js_string_templates.asp) [ JS
Numbers ](js_numbers.asp) [ JS BigInt ](js_bigint.asp) [ JS Number Methods
](js_number_methods.asp) [ JS Number Properties ](js_number_properties.asp) [
JS Arrays ](js_arrays.asp) [ JS Array Methods ](js_array_methods.asp) [ JS
Array Search ](js_array_search.asp) [ JS Array Sort ](js_array_sort.asp) [ JS
Array Iteration ](js_array_iteration.asp) [ JS Array Const
](js_array_const.asp) [ JS Dates ](js_dates.asp) [ JS Date Formats
](js_date_formats.asp) [ JS Date Get Methods ](js_date_methods.asp) [ JS Date
Set Methods ](js_date_methods_set.asp) [ JS Math ](js_math.asp) [ JS Random
](js_random.asp) [ JS Booleans ](js_booleans.asp) [ JS Comparisons
](js_comparisons.asp) [ JS If Else ](js_if_else.asp) [ JS Switch
](js_switch.asp) [ JS Loop For ](js_loop_for.asp) [ JS Loop For In
](js_loop_forin.asp) [ JS Loop For Of ](js_loop_forof.asp) [ JS Loop While
](js_loop_while.asp) [ JS Break ](js_break.asp) [ JS Iterables
](js_iterables.asp) [ JS Sets ](js_sets.asp) [ JS Set Methods
](js_set_methods.asp) [ JS Maps ](js_maps.asp) [ JS Map Methods
](js_map_methods.asp) [ JS Typeof ](js_typeof.asp) [ JS Type Conversion
](js_type_conversion.asp) [ JS Bitwise ](js_bitwise.asp) [ JS RegExp
](js_regexp.asp) [ JS Precedence ](js_precedence.asp) [ JS Errors
](js_errors.asp) [ JS Scope ](js_scope.asp) [ JS Hoisting ](js_hoisting.asp) [
JS Strict Mode ](js_strict.asp) [ JS this Keyword ](js_this.asp) [ JS Arrow
Function ](js_arrow_function.asp) [ JS Classes ](js_classes.asp) [ JS Modules
](js_modules.asp) [ JS JSON ](js_json.asp) [ JS Debugging ](js_debugging.asp)
[ JS Style Guide ](js_conventions.asp) [ JS Best Practices
](js_best_practices.asp) [ JS Mistakes ](js_mistakes.asp) [ JS Performance
](js_performance.asp) [ JS Reserved Words ](js_reserved.asp)
s/index.md?plain=1
"Folder: en-us/web/javascript/reference/global_objects/array/@@species \(Opens
in a new tab\)") â¢  [ Report a problem with this content
](https://github.com/mdn/content/issues/new?template=page-report.yml&mdn-
url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-
US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FArray%2F%40%40species&metadata=%3C%21--+Do+not+make+changes+below+this+line+--%3E%0A%3Cdetails%3E%0A%3Csummary%3EPage+report+details%3C%2Fsummary%3E%0A%0A*+Folder%3A+%60en-
us%2Fweb%2Fjavascript%2Freference%2Fglobal_objects%2Farray%2F%40%40species%60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fen-
US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FArray%2F%40%40species%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fblob%2Fmain%2Ffiles%2Fen-
us%2Fweb%2Fjavascript%2Freference%2Fglobal_objects%2Farray%2F%40%40species%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fcommit%2Fe01fd6206ce2fad2fe09a485bb2d3ceda53a62de%0A*+Document+last+modified%3A+2023-09-07T01%3A45%3A56.000Z%0A%0A%3C%2Fdetails%3E
"This will take you to GitHub to file a new issue.")

[ MDN logo  ](/)

Your blueprint for a better internet.

  * [ MDN on Mastodon  ](https://mozilla.social/@mdn)
  * [ MDN on X (formerly Twitter)  ](https://twitter.com/mozdevnet)
  * [ MDN on GitHub  ](https://github.com/mdn/)
  * [ MDN Blog RSS Feed  ](/en-US/blog/rss.xml)

##  MDN

  * [ About ](/en-US/about)
  * [ Blog ](/en-US/blog/)
  * [ Careers ](https://www.mozilla.org/en-US/careers/listings/?team=ProdOps)
  * [ Advertise with us ](/en-US/advertising)

##  Support

  * [ Product help ](https://support.mozilla.org/products/mdn-plus)
  * [ Report an issue ](/en-US/docs/MDN/Community/Issues)

##  Our communities

  * [ MDN Community ](/en-US/community)
  * [ MDN Forum ](https://discourse.mozilla.org/c/mdn/236)
  * [ MDN Chat ](/discord)

##  Developers

  * [ Web Technologies ](/en-US/docs/Web)
  * [ Learn Web Development ](/en-US/docs/Learn)
  * [ MDN Plus ](/en-US/plus)
  * [ Hacks Blog ](https://hacks.mozilla.org/)

[ Mozilla logo  ](https://www.mozilla.org/)

  * [ Website Privacy Notice ](https://www.mozilla.org/privacy/websites/)
  * [ Cookies ](https://www.mozilla.org/privacy/websites/#cookies)
  * [ Legal ](https://www.mozilla.org/about/legal/terms/mozilla)
  * [ Community Participation Guidelines ](https://www.mozilla.org/about/governance/policies/participation/)

Visit  [ Mozilla Corporationâs ](https://www.mozilla.org) not-for-profit
parent, the  [ Mozilla Foundation ](https://foundation.mozilla.org/) .  
Portions of this content are Â©1998â  2024  by individual mozilla.org
contributors. Content available under  [ a Creative Commons license ](/en-
US/docs/MDN/Writing_guidelines/Attrib_copyright_license) .

  *[
                
                 Non-standard
                
               ]: Non-standard. Check cross-browser support before using.
  *[
                
                 Deprecated
                
               ]: Deprecated. Not for use in new websites.
ct help ](https://support.mozilla.org/products/mdn-plus)
  * [ Report an issue ](/en-US/docs/MDN/Community/Issues)

##  Our communities

  * [ MDN Community ](/en-US/community)
  * [ MDN Forum ](https://discourse.mozilla.org/c/mdn/236)
  * [ MDN Chat ](/discord)

##  Developers

  * [ Web Technologies ](/en-US/docs/Web)
  * [ Learn Web Development ](/en-US/docs/Learn)
  * [ MDN Plus ](/en-US/plus)
  * [ Hacks Blog ](https://hacks.mozilla.org/)

[ Mozilla logo  ](https://www.mozilla.org/)

  * [ Website Privacy Notice ](https://www.mozilla.org/privacy/websites/)
  * [ Cookies ](https://www.mozilla.org/privacy/websites/#cookies)
  * [ Legal ](https://www.mozilla.org/about/legal/terms/mozilla)
  * [ Community Participation Guidelines ](https://www.mozilla.org/about/governance/policies/participation/)

Visit  [ Mozilla Corporationâs ](https://www.mozilla.org) not-for-profit
parent, the  [ Mozilla Foundation ](https://foundation.mozilla.org/) .  
Portions of this content are Â©1998â  2024  by individual mozilla.org
contributors. Content available under  [ a Creative Commons license ](/en-
US/docs/MDN/Writing_guidelines/Attrib_copyright_license) .

  *[
                
                 Non-standard
                
               ]: Non-standard. Check cross-browser support before using.
  *[
                
                 Deprecated
                
               ]: Deprecated. Not for use in new websites.
[ HTML Tutorial ](/html/default.asp)
[ CSS Tutorial ](/css/default.asp)
[ JavaScript Tutorial ](/js/default.asp)
[ How To Tutorial ](/howto/default.asp)
[ SQL Tutorial ](/sql/default.asp)
[ Python Tutorial ](/python/default.asp)
[ W3.CSS Tutorial ](/w3css/default.asp)
[ Bootstrap Tutorial ](/bootstrap/bootstrap_ver.asp)
[ PHP Tutorial ](/php/default.asp)
[ Java Tutorial ](/java/default.asp)
[ C++ Tutorial ](/cpp/default.asp)
[ jQuery Tutorial ](/jquery/default.asp)
60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fen-
US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fapply%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fblob%2Fmain%2Ffiles%2Fen-
us%2Fweb%2Fjavascript%2Freference%2Fglobal_objects%2Ffunction%2Fapply%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fcommit%2Fe01fd6206ce2fad2fe09a485bb2d3ceda53a62de%0A*+Document+last+modified%3A+2023-09-07T01%3A45%3A56.000Z%0A%0A%3C%2Fdetails%3E
"This will take you to GitHub to file a new issue.")

[ MDN logo  ](/)

Your blueprint for a better internet.

  * [ MDN on Mastodon  ](https://mozilla.social/@mdn)
  * [ MDN on X (formerly Twitter)  ](https://twitter.com/mozdevnet)
  * [ MDN on GitHub  ](https://github.com/mdn/)
  * [ MDN Blog RSS Feed  ](/en-US/blog/rss.xml)

##  MDN

  * [ About ](/en-US/about)
  * [ Blog ](/en-US/blog/)
  * [ Careers ](https://www.mozilla.org/en-US/careers/listings/?team=ProdOps)
  * [ Advertise with us ](/en-US/advertising)

##  Support

  * [ Product help ](https://support.mozilla.org/products/mdn-plus)
  * [ Report an issue ](/en-US/docs/MDN/Community/Issues)

##  Our communities

  * [ MDN Community ](/en-US/community)
  * [ MDN Forum ](https://discourse.mozilla.org/c/mdn/236)
  * [ MDN Chat ](/discord)

##  Developers

  * [ Web Technologies ](/en-US/docs/Web)
  * [ Learn Web Development ](/en-US/docs/Learn)
  * [ MDN Plus ](/en-US/plus)
  * [ Hacks Blog ](https://hacks.mozilla.org/)

[ Mozilla logo  ](https://www.mozilla.org/)

  * [ Website Privacy Notice ](https://www.mozilla.org/privacy/websites/)
  * [ Cookies ](https://www.mozilla.org/privacy/websites/#cookies)
  * [ Legal ](https://www.mozilla.org/about/legal/terms/mozilla)
  * [ Community Participation Guidelines ](https://www.mozilla.org/about/governance/policies/participation/)

Visit  [ Mozilla Corporationâs ](https://www.mozilla.org) not-for-profit
parent, the  [ Mozilla Foundation ](https://foundation.mozilla.org/) .  
Portions of this content are Â©1998â  2024  by individual mozilla.org
contributors. Content available under  [ a Creative Commons license ](/en-
US/docs/MDN/Writing_guidelines/Attrib_copyright_license) .

  *[
                
                 Non-standard
                
               ]: Non-standard. Check cross-browser support before using.
  *[
                
                 Deprecated
                
               ]: Deprecated. Not for use in new websites.
es%2Fen-
us%2Fweb%2Fjavascript%2Freference%2Fglobal_objects%2Fobject%2Fhasownproperty%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fcommit%2F619eb04efb7c6171fd4385fd4ba926805ee08a35%0A*+Document+last+modified%3A+2024-01-15T21%3A56%3A52.000Z%0A%0A%3C%2Fdetails%3E
"This will take you to GitHub to file a new issue.")

[ MDN logo  ](/)

Your blueprint for a better internet.

  * [ MDN on Mastodon  ](https://mozilla.social/@mdn)
  * [ MDN on X (formerly Twitter)  ](https://twitter.com/mozdevnet)
  * [ MDN on GitHub  ](https://github.com/mdn/)
  * [ MDN Blog RSS Feed  ](/en-US/blog/rss.xml)

##  MDN

  * [ About ](/en-US/about)
  * [ Blog ](/en-US/blog/)
  * [ Careers ](https://www.mozilla.org/en-US/careers/listings/?team=ProdOps)
  * [ Advertise with us ](/en-US/advertising)

##  Support

  * [ Product help ](https://support.mozilla.org/products/mdn-plus)
  * [ Report an issue ](/en-US/docs/MDN/Community/Issues)

##  Our communities

  * [ MDN Community ](/en-US/community)
  * [ MDN Forum ](https://discourse.mozilla.org/c/mdn/236)
  * [ MDN Chat ](/discord)

##  Developers

  * [ Web Technologies ](/en-US/docs/Web)
  * [ Learn Web Development ](/en-US/docs/Learn)
  * [ MDN Plus ](/en-US/plus)
  * [ Hacks Blog ](https://hacks.mozilla.org/)

[ Mozilla logo  ](https://www.mozilla.org/)

  * [ Website Privacy Notice ](https://www.mozilla.org/privacy/websites/)
  * [ Cookies ](https://www.mozilla.org/privacy/websites/#cookies)
  * [ Legal ](https://www.mozilla.org/about/legal/terms/mozilla)
  * [ Community Participation Guidelines ](https://www.mozilla.org/about/governance/policies/participation/)

Visit  [ Mozilla Corporationâs ](https://www.mozilla.org) not-for-profit
parent, the  [ Mozilla Foundation ](https://foundation.mozilla.org/) .  
Portions of this content are Â©1998â  2024  by individual mozilla.org
contributors. Content available under  [ a Creative Commons license ](/en-
US/docs/MDN/Writing_guidelines/Attrib_copyright_license) .

  *[
                
                 Deprecated
                
               ]: Deprecated. Not for use in new websites.