Giter Site home page Giter Site logo

Comments (3)

cwelch5 avatar cwelch5 commented on May 20, 2024

When changing the title, this shouldn't have any bearing on whether meta changes or not. I need to do a quick test to double-check.

from react-helmet.

AmrARaouf avatar AmrARaouf commented on May 20, 2024

Any luck?

from react-helmet.

cwelch5 avatar cwelch5 commented on May 20, 2024

@AmrARaouf
Thanks for your patience.

The reason this fails is because the shouldComponentUpdate check in Helmet returns false when just passing the meta, which causes the component not to re-render. You would get the same result if you passed an unchanged title value.

I did some debugging and found that in your scenario, when Helmet checks this.props and nextProps and compares them, the value is already changed:

[{"name": "keywords", "content": "bar"}, {"charset": "UTF-8"}]
[{"name": "keywords", "content": "bar"}, {"charset": "UTF-8"}]

And this is a result of manipulating the state directly in your foo function. You should never manipulate state directly, but always create new variables, so instead of

  var newMeta = this.state.meta;
  newMeta[0].content = bar;

try

  var newMeta = [
       {
             ...this.state.meta[0]
       }
  ];
  newMeta[0].content = bar;

With the spread operator we can make a new object with same values and then manipulate that new object to pass to Helmet.

from react-helmet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.