Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); data-table: fixes warning about missing key prop by antoinerg · Pull Request #1778 · plotly/dash · GitHub
Skip to content

data-table: fixes warning about missing key prop - #1778

Merged
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable
Sep 30, 2021
Merged

data-table: fixes warning about missing key prop#1778
antoinerg merged 5 commits into
devfrom
antrg-fix-datatable

Conversation

@antoinerg

@antoinergantoinerg commented Sep 24, 2021

Copy link
Copy Markdown
Contributor

Closesplotly/dash-table#860 and potentially #1433

As pointed out in plotly/dash-table#690 (comment), in order to see the warnings on the demo page, we need to use React's dev bundles (see 3eac50a). I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

The fix itself can be found in a25cca9. It adds the one missing key prop. After this commit, the missing key warning disappears in the demo page!

cc @alexcjohnson

Contributor Checklist

  • I have broken down my PR scope into the following TODO tasks
    • task 1
    • task 2
  • I have run the tests locally and they passed. (refer to testing section in contributing)
  • I have added tests, or extended existing tests, to cover any new features or bugs fixed in this PR

optionals

  • I have added entry in the CHANGELOG.md
  • If this PR needs a follow-up in dash docs, community thread, I have mentioned the relevant URLS as follows
    • this GitHub #PR number updates the dash docs
    • here is the show and tell thread in Plotly Dash community

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

I also changed the version of the React bundle to match the one used in package-lock.json. I don't know if this should stay in the PR but @chabb made a good argument for it to stay in.

Agreed - though at some point soon we will want to make react 17 an option you can enable for any given Dash app, at first just for our own testing purposes.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Via a Selenium test, it would probably be possible to check console logs and assert they're empty.

Actually, for this to work, we also need to use a development bundle of React in the tests. I'm not sure what's the best way to do that.

cc @alexcjohnson

@alexcjohnson

Copy link
Copy Markdown
Collaborator

We serve the dev version of react etc when you're in debug mode. In tests we typically disable hot reloading when we turn on debug, like:

dash_duo.start_server(
app,
debug=True,
use_reloader=False,
use_debugger=True,
dev_tools_hot_reload=False,
)

@antoinerg

Copy link
Copy Markdown
ContributorAuthor

Nice! Is there a way for our tests to catch this warning so we can ensure it doesn't pop up again as we change things?

Done in 50f8c04

Here's proof that this test detects the warning: https://app.circleci.com/pipelines/github/plotly/dash/2751/workflows/f3be563b-0da9-44e2-a0e1-4f0ad7796b2b/jobs/45091

@alexcjohnsonalexcjohnson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks for taking care of this! Please add a quick changelog entry, then 💃

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

React Warning "each child should have a unique "key" prop

2 participants

@antoinerg@alexcjohnson