mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Added warning for use of ReactLink.
This commit is contained in:
@@ -18,9 +18,13 @@ var ReactUpdates = require('ReactUpdates');
|
||||
|
||||
var assign = require('Object.assign');
|
||||
var invariant = require('invariant');
|
||||
var warning = require('warning');
|
||||
|
||||
var instancesByReactID = {};
|
||||
|
||||
var didWarnValueLink = false;
|
||||
var didWarnCheckedLink = false;
|
||||
|
||||
function forceUpdateIfMounted() {
|
||||
if (this._rootNodeID) {
|
||||
// DOM component is still mounted; update
|
||||
@@ -67,6 +71,21 @@ var ReactDOMInput = {
|
||||
props,
|
||||
inst._currentElement._owner
|
||||
);
|
||||
|
||||
if (props.valueLink !== undefined && !didWarnValueLink) {
|
||||
warning(
|
||||
false,
|
||||
'`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
didWarnValueLink = true;
|
||||
}
|
||||
if (props.checkedLink !== undefined && !didWarnCheckedLink) {
|
||||
warning(
|
||||
false,
|
||||
'`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
didWarnCheckedLink = true;
|
||||
}
|
||||
}
|
||||
|
||||
var defaultValue = props.defaultValue;
|
||||
|
||||
@@ -18,6 +18,8 @@ var ReactUpdates = require('ReactUpdates');
|
||||
var assign = require('Object.assign');
|
||||
var warning = require('warning');
|
||||
|
||||
var didWarnValueLink = false;
|
||||
|
||||
var valueContextKey =
|
||||
'__ReactDOMSelect_value$' + Math.random().toString(36).slice(2);
|
||||
|
||||
@@ -58,6 +60,14 @@ function checkSelectPropTypes(inst, props) {
|
||||
owner
|
||||
);
|
||||
|
||||
if (props.valueLink !== undefined && !didWarnValueLink) {
|
||||
warning(
|
||||
false,
|
||||
'`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
didWarnValueLink = true;
|
||||
}
|
||||
|
||||
for (var i = 0; i < valuePropNames.length; i++) {
|
||||
var propName = valuePropNames[i];
|
||||
if (props[propName] == null) {
|
||||
|
||||
@@ -19,6 +19,8 @@ var assign = require('Object.assign');
|
||||
var invariant = require('invariant');
|
||||
var warning = require('warning');
|
||||
|
||||
var didWarnValueLink = false;
|
||||
|
||||
function forceUpdateIfMounted() {
|
||||
if (this._rootNodeID) {
|
||||
// DOM component is still mounted; update
|
||||
@@ -67,6 +69,13 @@ var ReactDOMTextarea = {
|
||||
props,
|
||||
inst._currentElement._owner
|
||||
);
|
||||
if (props.valueLink !== undefined && !didWarnValueLink) {
|
||||
warning(
|
||||
false,
|
||||
'`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
didWarnValueLink = true;
|
||||
}
|
||||
}
|
||||
|
||||
var defaultValue = props.defaultValue;
|
||||
|
||||
@@ -254,14 +254,17 @@ describe('ReactDOMInput', function() {
|
||||
it('should warn with value and no onChange handler', function() {
|
||||
var link = new ReactLink('yolo', mocks.getMockFunction());
|
||||
ReactTestUtils.renderIntoDocument(<input type="text" valueLink={link} />);
|
||||
expect(console.error.argsForCall.length).toBe(0);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
expect(console.error.argsForCall[0][0]).toContain(
|
||||
'`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
|
||||
ReactTestUtils.renderIntoDocument(
|
||||
<input type="text" value="zoink" onChange={mocks.getMockFunction()} />
|
||||
);
|
||||
expect(console.error.argsForCall.length).toBe(0);
|
||||
ReactTestUtils.renderIntoDocument(<input type="text" value="zoink" />);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
ReactTestUtils.renderIntoDocument(<input type="text" value="zoink" />);
|
||||
expect(console.error.argsForCall.length).toBe(2);
|
||||
});
|
||||
|
||||
it('should warn with value and no onChange handler and readOnly specified', function() {
|
||||
@@ -318,7 +321,10 @@ describe('ReactDOMInput', function() {
|
||||
var node = document.createElement('div');
|
||||
var link = new ReactLink(true, mocks.getMockFunction());
|
||||
ReactDOM.render(<input type="checkbox" checkedLink={link} />, node);
|
||||
expect(console.error.argsForCall.length).toBe(0);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
expect(console.error.argsForCall[0][0]).toContain(
|
||||
'`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
|
||||
ReactTestUtils.renderIntoDocument(
|
||||
<input
|
||||
@@ -327,15 +333,15 @@ describe('ReactDOMInput', function() {
|
||||
onChange={mocks.getMockFunction()}
|
||||
/>
|
||||
);
|
||||
expect(console.error.argsForCall.length).toBe(0);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
|
||||
ReactTestUtils.renderIntoDocument(
|
||||
<input type="checkbox" checked="false" readOnly={true} />
|
||||
);
|
||||
expect(console.error.argsForCall.length).toBe(0);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
|
||||
ReactTestUtils.renderIntoDocument(<input type="checkbox" checked="false" />);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
expect(console.error.argsForCall.length).toBe(2);
|
||||
});
|
||||
|
||||
it('should warn with checked and no onChange handler with readOnly specified', function() {
|
||||
|
||||
@@ -357,7 +357,16 @@ describe('ReactDOMSelect', function() {
|
||||
<option value="giraffe">A giraffe!</option>
|
||||
<option value="gorilla">A gorilla!</option>
|
||||
</select>;
|
||||
|
||||
spyOn(console, 'error');
|
||||
|
||||
stub = ReactTestUtils.renderIntoDocument(stub);
|
||||
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
expect(console.error.argsForCall[0][0]).toContain(
|
||||
'`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
|
||||
var node = ReactDOM.findDOMNode(stub);
|
||||
|
||||
expect(node.options[0].selected).toBe(false); // monkey
|
||||
|
||||
@@ -241,7 +241,13 @@ describe('ReactDOMTextarea', function() {
|
||||
var link = new ReactLink('yolo', mocks.getMockFunction());
|
||||
var instance = <textarea valueLink={link} />;
|
||||
|
||||
spyOn(console, 'error');
|
||||
instance = renderTextarea(instance);
|
||||
expect(console.error.argsForCall.length).toBe(1);
|
||||
expect(console.error.argsForCall[0][0]).toContain(
|
||||
'`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.'
|
||||
);
|
||||
|
||||
|
||||
expect(ReactDOM.findDOMNode(instance).value).toBe('yolo');
|
||||
expect(link.value).toBe('yolo');
|
||||
|
||||
Reference in New Issue
Block a user