Хорошо, я сам разобрался. Однако это не лучшее решение. По сути, я конвертирую обновленный текст в тип HTML, а затем сравниваю значение с преобразованным darft.js editorState. Вкратце, вот мой код, если он кому-нибудь поможет в будущем
import React, { useEffect, useState } from 'react'
import {
EditorState, ContentState, convertToRaw,
} from 'draft-js'
import { Editor } from 'react-draft-wysiwyg'
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'
import draftToHtml from 'draftjs-to-html'
import htmlToDraft from 'html-to-draftjs'
export default ({ value, onChange }) => {
const [editorState, setEditorState] = useState(EditorState.createEmpty())
useEffect(() => {
if (toHtml(editorState) === value) return //added
setEditorState(
EditorState.push(
editorState,
ContentState.createFromBlockArray(
htmlToDraft(value || ''),
),
),
)
}, [value])
return (
<div className="rich-editor">
<Editor
editorState={editorState}
onEditorStateChange={onEditorStateChange}
toolbar={{
options: ['inline'],
inline: {
options: ['bold', 'italic', 'underline'],
},
}}
/>
</div>
)
function onEditorStateChange(es) {
setEditorState(es)
const html = toHtml(es) //added
if (value !== html) {
onChange({ target: { name: 'text', value: html } })
}
}
function toHtml(es) {
return draftToHtml(convertToRaw(es.getCurrentContent())) // added
}
}
я соединяющийся с офисной сетью работаю и загружаю последнюю форму версии svn, используют сервер Dev mysql, таким образом, я точно так же, как компьютер пыльника в офисной сети
Распределенный / Децентрализованное решение для Системы управления версиями удовлетворит Вашим потребностям, Мерзавцу, Базару, Подвижному, darcs... у Вас есть много альтернатив.
Я также использую Dropbox, и это является ключевым, потому что важно сохранить это простым.
Обычно лучше, если у Вас может быть некоторый тип способности к удаленному рабочему столу, потому что это позволит Вам использовать стандартную конфигурацию рабочей станции, и это будет допускать последовательное соединение с сетевыми ресурсами (сервер базы данных, бизнес-серверы как рабочий процесс, и т.д.).
Работа офлайн, по-моему, хорошо для определенных задач, но в целом существуют препятствия для систем, которые соединяются с другими ресурсами (если Вы не планируете переместить те ресурсы в свое домашнее поле).
Я предполагаю, что большую часть времени потраченное копирование включает базу данных. Это правильно? Если так, Вы не можете просто подключить к своей работе DB от домашнего использования Вашего соединения VPN?
Вы все еще скопировали бы свои исходные файлы (или использовали бы систему управления исходным кодом, как другие предположили), но это только взяло бы часть времени.
Вы не указали ОС и систему виртуализации, но если Вы работаете образы виртуальной машины, которые могут быть смонтированы, например, XEN на Linux, затем Вы могли смонтировать изображение и синхронизировать его через rsync.
Это была проблема для меня также. Так, компания купила меня ноутбук, и я делаю свою работу над нею, дома или где-либо еще.
Если все, в чем Вы нуждаетесь, является виртуальной машиной от Вашего рабочего компьютера, то Вы могли смонтировать удаленный каталог (использующий nfs или кого-то), где Ваше хранилище файлов виртуальной машины является и выполняет ту виртуальную машину оттуда. Это должно быть быстрее, чем использование удаленного рабочего стола.
У меня есть набор, где папка на одной машине синхронизируется к папке на другой машине. любые изменения в содержании на одной машине также внесены на другой машине в течение минуты. Таким образом, Вы могли синхронизировать высокоуровневую папку своих рабочих файлов и иметь затем синхронизацию к Вашей домашней машине. Что я люблю, приблизительно это - то, что синхронизация абсолютно прозрачна. Насколько пользовательский опыт идет, я просто использую файловую систему. Никакое внешнее приложение для взаимодействия с.
Я использую Живую Синхронизирующую Живую Синхронизацию от Microsoft до этого. Необходимо будет создать Windows Live ID для использования этой системы. Это работает на окна и макинтоши.
В зависимости от программного обеспечения VM Вы используете, почему Вы не настраиваете 2 различных диска VM, сохраните свой профиль пользователя/dev файлами на одном диске и ОС и других программах, которые редко изменяются на другом.
Таким образом, можно, вероятно, сойти с рук только необходимость скопировать больший образ диска, когда Вы установили что-то новое и заканчиваете тем только, что копировали единый виртуальный диск, содержащий Вашу работу.
Просто установите сервер SVN дома, передайте свой порт маршрутизатора и продолжите Вашу жизнь. rsync является также хорошим, быстрым решением. Просто не забудьте использовать его по SSH.
Мы работаем с распределенной командой, таким образом, жизненно важно, чтобы у всех был доступ к репозиторию легкого и безопасного кода. Для этого мы используем SVN по ssl/https. Это работает отлично, надежно и безопасный.
Запишите программу, которая будет синхронизировать все Ваши данные через Интернет, и затем shutwodn Ваш компьютер, таким образом, в конце дня Вы запустите его и идете домой, и когда Вы приходите домой, все данные уже там
Вот решение, которое я использую.
Когда в офисе я проверяю проект, работу над ним и затем регистрирую его. Когда дома или во всем мире я соединюсь с офисом через VPN, проверю свой проект, делают моя вещь затем регистрируйте его. Через соединение VPN я могу также RDP к своим dev полям и или серверы.
Надеюсь, это поможет. Удачи!
Разве кто-либо не рекомендовал rsync? Используйте rsync клиент для отправки разности между файлами. Можно применить эти diffs, таким образом осовременивающие файл. Для самой маленькой передачи файлов это - вероятно, лучшая идея.
Мы используем Citrix, и затем я делаю соединение удаленного рабочего стола со своим ПК на работе. Это не быстрое решение в мире, но это действительно устраняет проблему хранения двух или больше актуальных рабочих станций.
Я или подключаю удаленно к офису SVN, или VPN в и удаленный рабочий стол мой dev или настольная машина и продолжаю работать. Очень редко, чтобы я синхронизировал любые файлы, но когда я делаю это обычно с Dropbox (хотя Вы не можете действительно сделать этого с большими файлами).
Я просто использую внешний портативный диск ноутбука и делаю всю мою работу над этим. Все мои ПК имеют его набор к той же букве диска. Так никакое копирование чего-либо.. Я не попытался выполнить VMs этот путь, однако, но я не вижу оснований, это не должно просто работать.
Используйте программное обеспечение управления версиями как SVN, SourceOffSite, и т.д. Вы просто имеете к регистрации все свои изменения и получаете последние изменения, когда Вы хотите синхронизировать.
Или можно использовать Windows Live Sync-> https://sync.live.com/foldersharetolivesync.aspx
У меня была подобная проблема. Но к счастью у нас был сервер управления исходным кодом (TFS), настроенный, таким образом, я использую для работы только от локальных Виртуальных машин, сохраненных на моем внешнем диске и, чем регистрация необходимых файлов к TFS как при необходимости.
Dropbox и Microsoft Live Sync - хорошие варианты, о которых уже упоминалось. Мне больше всего нравится Live Mesh , тоже от Microsoft. Одна замечательная функция, которая ставит его над двумя другими, на мой взгляд, - это возможность указывать, какие папки синхронизируются на каких компьютерах и где расположены папки. Так, например, я синхронизирую свою папку Visual Studio 2005 / Projects между моей рабочей машиной и моим домашним устройством для разработчиков, а также синхронизирую Visual Studio 2008 / Projects между моей боковой виртуальной машиной и домашним модулем разработчика.
У меня есть macbook со всем моим программным обеспечением для разработчиков; когда я иду на работу, я запускаю его в целевом режиме Firewire и подключаю к своему рабочему macpro с быстрым процессором, подключением к локальной сети, большим монитором и т. д. Таким образом мне никогда не нужно покидать свою папку пользователя, но у меня есть доступ ко всем программное и аппаратное обеспечение, доступное в работе.
Почему бы вам просто не использовать контроль версий? DVCS? Найдите здесь учебник по DVCS для пользователей Windows (очень простой) http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html