title: Detecting rather prop were passed in or set by defaultProps
body: <p>I would find it convenient if one of two closely related features were possible to do in React, purely for convenience/syntactic sugar since I know I can do what I want without them, it's just a little uglier/slower.  I suspect neither can be done, so rather then write two separate questions that are nearly identical I'm asking about both in this question so you can crash my dreams all at once :)</p>
  
  <p>I've found myself wanting a convenience feature a few times, some way of storing in props a little more knowledge about what props are set to avoid having to write as many helper methods. </p>
  
  <p>To use my most recent example I have two props errorEvaluator and warningEvalutator are functions that check rather a data set should be marked with warning or error state.  They both have default props which always return false if an evaluation isn't provided, so I don't have to constantly do null checks in code.</p>
  
  <p>I now want to know if no warning or error evaluator was provided, if so I won't offset everything to make space for the warning/error icon that will never be used, I can't just check for the funcitons being undefined since I use defaultProps.  What I'd like is one of two quickconvenience options for checking if these values weren't set by the operator.  So something like:</p>
  
  <ol>
  <li>some function that checks rather a prop was passed by user, as opposed to being set by default props, I could call to find out rather there was a value set.</li>
  <li>Some way to do quick modification of props whenever a component updates where I can set some showIcon prop if both evaluators are undefined, then set the evaluators to my default always-false evaporators; without having to resort to lifecycle methods which somehow feel like overkill.</li>
  </ol>
  
  <p>Do either of these, or some equivalent <em>quick</em> way of doing such a check exist?</p>
  
  <p>The cleanest option I know works is to not use default props and instead have methods that return my evaluators, returning default evaluator if none is passed, for when I want to use an evaluator, then checking for undefined evaluator in props when I want to know if an evaluator was provided.  That works, I'm just wondering if there is some quicker or cooler syntactical sugar I'm not aware of?</p>